java获取时间的处理

来源:互联网 发布:3dmax动画导入unity3d 编辑:程序博客网 时间:2024/05/16 08:41
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Locale;public class TestCalendar {public static void main(String[] args) {String [] queryMonthTimes = getMonthBenginTimeAndEndTime("2011-12");System.out.println(queryMonthTimes[0] + "---------" + queryMonthTimes[1]);String [] queryYearTimes = getWeekBenginTimeAndEndTime("2011-11",4);System.out.println(queryYearTimes[0] +  "---------" + queryYearTimes[1]);System.out.println(getWeekCount("2011-05"));Object [] defaultTimes = getBeginTimeAndEndTimeAndDeFaultTime();System.out.println(defaultTimes[0]+ "------" + defaultTimes[1] + "-------" + defaultTimes[2] + "-------" + defaultTimes[3]);}/** * 获取指定月份的起始时间和结束时间 * @param 指定的时间字符串 */public static String[] getMonthBenginTimeAndEndTime(String queryTime){String [] time  = new String [2];SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();try {calendar.setTimeInMillis(sdf.parse(queryTime).getTime());} catch (ParseException e) {e.printStackTrace();}String benginTime = queryTime + "-" + calendar.getActualMinimum(Calendar.DAY_OF_MONTH);String endTime = queryTime + "-" + calendar.getActualMaximum(Calendar.DAY_OF_MONTH);time[0] = benginTime;time[1] = endTime;return time;}/** * 获取指定年的起始时间和结束时间 * @param 指定的时间字符串  格式为:yyyy-MM * @param 周的索引 */public static String[] getWeekBenginTimeAndEndTime(String queryTime,Integer weekIndex){String [] time  = new String [2];SimpleDateFormat weekFormat = new SimpleDateFormat("yyyy-MM");SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance(Locale.CHINA);try {calendar.setTimeInMillis(weekFormat.parse(queryTime).getTime());} catch (ParseException e) {e.printStackTrace();}calendar.set(Calendar.DAY_OF_MONTH,1);//获取查询月的第一个星期一的时间if(calendar.get(Calendar.DAY_OF_WEEK) == 1){calendar.add(Calendar.DAY_OF_MONTH, 1);}else if(calendar.get(Calendar.DAY_OF_WEEK) != 2){int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);calendar.add(Calendar.DAY_OF_MONTH, 9-dayOfWeek);}//根据查询的周数进行日期的7的倍数的回滚以至于得到查询周数的起始时间calendar.add(Calendar.DAY_OF_MONTH, (weekIndex-1)*7);String beginTime = dayFormat.format(calendar.getTime());//查询周数的结束时间calendar.add(Calendar.DAY_OF_MONTH, 6);String endTime = dayFormat.format(calendar.getTime());time[0] = beginTime;time[1] = endTime;return time;}/** * 根据指定的时间获取当前月份有多少周 * @param 指定的时间字符串 格式:yyyy-MM */public static int getWeekCount(String queryTime){SimpleDateFormat weekFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance(Locale.CHINA);try {calendar.setTimeInMillis(weekFormat.parse(queryTime).getTime());} catch (ParseException e) {e.printStackTrace();}calendar.set(Calendar.DAY_OF_MONTH,1);int dayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);int dayOfWeek = 0;//获取当前月份的第一天是星期几if(2 != calendar.get(Calendar.DAY_OF_WEEK)){dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) -1;}dayOfMonth = dayOfMonth - dayOfWeek;//获取当前月的最后一天的日期calendar.add(Calendar.MONTH, 1);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);if(1 != calendar.get(Calendar.WEEK_OF_YEAR)){dayOfWeek = 8-calendar.get(Calendar.DAY_OF_WEEK);}dayOfMonth = dayOfMonth + dayOfWeek;return dayOfMonth/7;}/** * 获取当前的时间的周的开始时间和结束时间,以及月份的默认时间 * @return 时间的数组:第一个默认年月、第二个当前周数、第三个周的开始时间、第四个周的结束时间 */public static Object[] getBeginTimeAndEndTimeAndDeFaultTime(){Object[] time = new Object[4];Calendar calendar = Calendar.getInstance();calendar.set(Calendar.DAY_OF_MONTH, 31);//获取当前时间在本月处于第几周int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM");String queryTimes[] = null;String queryTime = null;if(weekOfMonth == 1){calendar.set(Calendar.DAY_OF_MONTH, 1);int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1;if(dayOfWeek != 1){//获取上个月的周数calendar.add(Calendar.DAY_OF_MONTH, -1);queryTime = monthFormat.format(calendar.getTime());weekOfMonth = getWeekCount(queryTime);queryTimes = getWeekBenginTimeAndEndTime(queryTime,weekOfMonth);}else{queryTime = monthFormat.format(calendar.getTime());queryTimes = getWeekBenginTimeAndEndTime(queryTime,1);}}else{queryTime = monthFormat.format(calendar.getTime());queryTimes = getWeekBenginTimeAndEndTime(queryTime,weekOfMonth);}time[0] = queryTime;time[1] = weekOfMonth;time[2] = queryTimes[0];time[3] = queryTimes[1];return time;}}


原创粉丝点击