获取 Java 日期的上周日期范围

新手上路,请多包涵

假设我有一个日期 2013 年 6 月 20 日

如何获得上周的日期范围,即在本例中为 6 月 9 日至 6 月 15 日。

另外,如果日期是 2013 年 6 月 2 日

范围应该是5月26日到6月1日

原文由 Ryan Malhotra 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 310
2 个回答

这是基于 Java 日历的解决方案

    Date date = new Date();
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    int i = c.get(Calendar.DAY_OF_WEEK) - c.getFirstDayOfWeek();
    c.add(Calendar.DATE, -i - 7);
    Date start = c.getTime();
    c.add(Calendar.DATE, 6);
    Date end = c.getTime();
    System.out.println(start + " - " + end);

输出

Mon Jun 10 13:22:01 EEST 2013 - Sun Jun 16 13:22:01 EEST 2013

它是本地化的,在我的 Locale 周从星期一开始

原文由 Evgeniy Dorofeev 发布,翻译遵循 CC BY-SA 3.0 许可协议

Java 811 版本

final ZonedDateTime input = ZonedDateTime.now();
System.out.println(input);
final ZonedDateTime startOfLastWeek = input.minusWeeks(1).with(DayOfWeek.MONDAY);
System.out.println(startOfLastWeek);
final ZonedDateTime endOfLastWeek = startOfLastWeek.plusDays(6);
System.out.println(endOfLastWeek);

原文由 freedev 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题