怎么通过当前时间来获取到这一周的时间?

解决方案 »

  1.   

    package com.java.test;import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;public class DummyMethod {
        public static void main(String[] args) throws ParseException {
            Calendar cal = Calendar.getInstance();
    //      默认为当前时间。也指定其他时间,参数为 long 或 Date。
    //      cal.setTimeInMillis(ts);
    //      cal.setTime(dt);
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
            int offset = 0;
    //      以周一作为本周的第一天
            switch (cal.get(Calendar.DAY_OF_WEEK)) {
            case Calendar.SUNDAY:
                offset--;
            case Calendar.SATURDAY:
                offset--;
            case Calendar.FRIDAY:
                offset--;
            case Calendar.THURSDAY:
                offset--;
            case Calendar.WEDNESDAY:
                offset--;
            case Calendar.TUESDAY:
                offset--;
            case Calendar.MONDAY:
                break;
            default:
                break;
            }
    //      以周日作为本周的第一天
    //      switch (cal.get(Calendar.DAY_OF_WEEK)) {
    //      case Calendar.SATURDAY:
    //          offset--;
    //      case Calendar.FRIDAY:
    //          offset--;
    //      case Calendar.THURSDAY:
    //          offset--;
    //      case Calendar.WEDNESDAY:
    //          offset--;
    //      case Calendar.TUESDAY:
    //          offset--;
    //      case Calendar.MONDAY:
    //          offset--;
    //      case Calendar.SUNDAY:
    //          break;
    //      default:
    //          break;
    //      }
            String dtf = "yyyy.MM.dd HH:mm:ss.SSS";
            DateFormat df = new SimpleDateFormat(dtf);
            System.out.println("Time range of current week:");
            cal.add(Calendar.DAY_OF_MONTH, offset);
            System.out.println(df.format(cal.getTime()));
            cal.add(Calendar.WEEK_OF_YEAR, 1);
            System.out.println(df.format(cal.getTime()));
        }
    }Time range of current week:
    2018.01.01 00:00:00.000
    2018.01.08 00:00:00.000
      

  2.   

    joda-time
      

  3.   

    看到 CSDN 在帖子下面推荐的博文:
    http://blog.csdn.net/Kiss_Mark/article/details/47006107
    发现有人使用了更为简便的方法,方法如下:package com.java.test;import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;public class DummyMethod {
    public static void main(String[] args) {
    String dtf = "yyyy.MM.dd HH:mm:ss.SSS";
    DateFormat df = new SimpleDateFormat(dtf);
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    {
    // 以周一作为本周的第一天
    Calendar cal1 = (Calendar)cal.clone();
    System.out.println("Time range of current week:");
    cal1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    System.out.println(df.format(cal1.getTime()));
    cal1.add(Calendar.WEEK_OF_YEAR, 1);
    System.out.println(df.format(cal1.getTime()));
    }
    {
    // 以周日作为本周的第一天
    Calendar cal2 = (Calendar)cal.clone();
    System.out.println("Time range of current week:");
    cal2.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    System.out.println(df.format(cal2.getTime()));
    cal2.add(Calendar.WEEK_OF_YEAR, 1);
    System.out.println(df.format(cal2.getTime()));
    }
    }
    }博文中输出的是年月日,并且打出本周的范围时,以周一到周日的日期打出。
    而我是以当前周一到下周一的方式打出,代码略不同,少了一行设置星期的代码。