Chinaunix

标题: Java获取一年有多少周、某周的第一天和最后一天 [打印本页]

作者: mahaijiang    时间: 2015-07-08 10:41
标题: Java获取一年有多少周、某周的第一天和最后一天
Java获取一年有多少周、某周的第一天和最后一天.

原文地址:http://blog.csdn.net/dragonvsdragon/article/details/7034007
  1. import java.text.SimpleDateFormat;
  2. import java.util.Calendar;
  3. import java.util.Date;
  4. import java.util.GregorianCalendar;


  5. public class Test {

  6.     // 获取当前时间所在年的周数
  7.     public static int getWeekOfYear(Date date) {
  8.         Calendar c = new GregorianCalendar();
  9.         c.setFirstDayOfWeek(Calendar.MONDAY);
  10.         c.setMinimalDaysInFirstWeek(7);
  11.         c.setTime(date);

  12.         return c.get(Calendar.WEEK_OF_YEAR);
  13.     }

  14.     // 获取当前时间所在年的最大周数
  15.     public static int getMaxWeekNumOfYear(int year) {
  16.         Calendar c = new GregorianCalendar();
  17.         c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);

  18.         return getWeekOfYear(c.getTime());
  19.     }

  20.     // 获取某年的第几周的开始日期
  21.     public static Date getFirstDayOfWeek(int year, int week) {
  22.         Calendar c = new GregorianCalendar();
  23.         c.set(Calendar.YEAR, year);
  24.         c.set(Calendar.MONTH, Calendar.JANUARY);
  25.         c.set(Calendar.DATE, 1);

  26.         Calendar cal = (GregorianCalendar) c.clone();
  27.         cal.add(Calendar.DATE, week * 7);

  28.         return getFirstDayOfWeek(cal.getTime());
  29.     }

  30.     // 获取某年的第几周的结束日期
  31.     public static Date getLastDayOfWeek(int year, int week) {
  32.         Calendar c = new GregorianCalendar();
  33.         c.set(Calendar.YEAR, year);
  34.         c.set(Calendar.MONTH, Calendar.JANUARY);
  35.         c.set(Calendar.DATE, 1);

  36.         Calendar cal = (GregorianCalendar) c.clone();
  37.         cal.add(Calendar.DATE, week * 7);

  38.         return getLastDayOfWeek(cal.getTime());
  39.     }

  40.     // 获取当前时间所在周的开始日期
  41.     public static Date getFirstDayOfWeek(Date date) {
  42.         Calendar c = new GregorianCalendar();
  43.         c.setFirstDayOfWeek(Calendar.MONDAY);
  44.         c.setTime(date);
  45.         c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
  46.         return c.getTime();
  47.     }

  48.     // 获取当前时间所在周的结束日期
  49.     public static Date getLastDayOfWeek(Date date) {
  50.         Calendar c = new GregorianCalendar();
  51.         c.setFirstDayOfWeek(Calendar.MONDAY);
  52.         c.setTime(date);
  53.         c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
  54.         return c.getTime();
  55.     }

  56.     public static void main(String[] args) {
  57.         int year = 2015;
  58.         int week = 27;

  59.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  60.         Date today = new Date();
  61.         Calendar c = new GregorianCalendar();
  62.         c.setTime(today);

  63.         System.out.println("当前时间:current date = " + sdf.format(today));
  64.         System.out.println("当前第几周:getWeekOfYear = " + getWeekOfYear(today));
  65.         System.out.println("年度总周数:getMaxWeekNumOfYear = " + getMaxWeekNumOfYear(year));
  66.         System.out.println("本周第一天:getFirstDayOfWeek = " + sdf.format(getFirstDayOfWeek(year, week)));
  67.         System.out.println("本周最后一天:getLastDayOfWeek = " + sdf.format(getLastDayOfWeek(year, week)));
  68.         System.out.println("本周第一天:getFirstDayOfWeek = " + sdf.format(getFirstDayOfWeek(today)));
  69.         System.out.println("本周最后一天:getLastDayOfWeek = " + sdf.format(getLastDayOfWeek(today)));
  70.     }
  71. }


  72.         
  73.         //输出结果:
  74. //        当前时间:current date = 2015-07-07 16:35:07
  75. //        当前第几周:getWeekOfYear = 27
  76. //        年度总周数:getMaxWeekNumOfYear = 52
  77. //        getFirstDayOfWeek = 2015-07-06 16:35:07
  78. //        getLastDayOfWeek = 2015-07-12 16:35:07
  79. //        getFirstDayOfWeek = 2015-07-06 16:35:07
  80. //        getLastDayOfWeek = 2015-07-12 16:35:07
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2