Java - 获取与上一年相同的每周日期范围

奥列格·克雷洛夫

我需要根据当前日期获取当前周和上一年同一周的某些数据。

例如,今天是 23/11/2017 - 星期四。我有本周的下一个日期范围:20/11/2017(星期一) - 23/11/2017(星期四)。

获得上一年(21/11/2016(星期一) - 24/11/2016(星期四))的相应每周日期范围的最佳方法是什么?

奥莱VV

困难的部分是定义你想要什么以及你想要它在哪个时区。后者是真的,因为在撰写本文时,斯摩棱斯克是 11 月 23 日,但在世界其他地方已经是 11 月 24 日,所以你需要决定。

我是这样理解您的问题,请检查是否正确:查找从本周开始(星期一)到今天的日期范围。然后从去年的星期一到今天的同一天找到一个范围,尽可能接近相同的日期。这意味着您总是想回到 52 周前。然后您将获得一天后的日期(如果在闰年中跨越 2 月 29 日,则为两天后),这将始终尽可能接近。

使用java.time现代 Java 日期和时间 API,代码很简单:

    LocalDate today = LocalDate.now(ZoneId.of("Europe/Moscow"));
    LocalDate firstDayOfWeek 
            = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
    System.out.println("This year: " + firstDayOfWeek + " - " + today);

    LocalDate firstDayLastYear = firstDayOfWeek.minusWeeks(52);
    LocalDate correspondingDayLastYear = today.minusWeeks(52);
    System.out.println("Last year: " + firstDayLastYear + " - "
                        + correspondingDayLastYear);

刚才运行这个打印:

This year: 2017-11-20 - 2017-11-23
Last year: 2016-11-21 - 2016-11-24

如果这不是您想要的时区,请替换您想要的时区而不是欧洲/莫斯科。

如果您还想打印星期几,请使用DateTimeFormatter.

    DateTimeFormatter dateFormatter = DateTimeFormatter
            .ofPattern("d/M/uuuu (EEEE)", Locale.forLanguageTag("ru"));
    System.out.println("This year: " + firstDayOfWeek.format(dateFormatter) + " - "
            + today.format(dateFormatter));

这打印:

This year: 20/11/2017 (понедельник) - 23/11/2017 (четверг)

如果您在 2018 年 12 月 31 日运行代码,您将无法回到 2017 年:

This year: 2018-12-31 - 2018-12-31
Last year: 2018-01-01 - 2018-01-01

再次,检查这是否是您想要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Java日历获取一年中的星期几,以周日作为星期几

来自分类Dev

使用Java获取上一年的特定月份

来自分类Dev

Clojure Java时间-日期提前一年了吗?

来自分类Dev

如何在一年中使用Java 8进行每周的迭代?

来自分类Dev

获取上周日期范围(以php为单位),每周周一至周日

来自分类Dev

获取上周日期范围(以php为单位),每周周一至周日

来自分类Dev

使用Java获取期间中的每一年

来自分类Dev

是否有任何DateTime库支持Java的一年中的每季度和每周的某周?

来自分类Dev

带有当年和上一年的每周范围范围的数据

来自分类Dev

Java日历问题与添加一年

来自分类Dev

一年增加几天-Java

来自分类Dev

将一年添加到在Java脚本中选择的随机日期

来自分类Dev

Java日期转换:返回一年中的不同星期

来自分类Dev

在 MS SQL 中每周获取过去一年的记录

来自分类Dev

Java Looping 一年从现在开始

来自分类Dev

将一年和一天(例如2013216 = 2013年的第216天)转换为Java中的完整日期

来自分类Dev

SSRS日期来自上一年,但选择了相同的工作日名称

来自分类Dev

与上一年相比,记录平均增加

来自分类Dev

如何从一年中的日期获取日期

来自分类Dev

为什么Java的java.time.format.DateTimeFormatter#format(LocalDateTime)增加一年?

来自分类Dev

如何在java中的两个日期之间获取周六和周日

来自分类Dev

从0获取一年中的星期范围

来自分类Dev

Java的说,一年0是闰年,但年0从来没有存在过

来自分类Dev

PHP DateTime:获取与上一年相比的当前周/月/年间隔(开始-结束)

来自分类Dev

C从日期获取一年中的某天

来自分类Dev

获取一年中某天的完整日期

来自分类Dev

在Excel中获取一年中某天的日期

来自分类Dev

在 Unix (AIX) 中获取今天的日期减去一年

来自分类Dev

如何获取这种格式的当前周日期范围(2017 年 3 月 20 日)?

Related 相关文章

  1. 1

    使用Java日历获取一年中的星期几,以周日作为星期几

  2. 2

    使用Java获取上一年的特定月份

  3. 3

    Clojure Java时间-日期提前一年了吗?

  4. 4

    如何在一年中使用Java 8进行每周的迭代?

  5. 5

    获取上周日期范围(以php为单位),每周周一至周日

  6. 6

    获取上周日期范围(以php为单位),每周周一至周日

  7. 7

    使用Java获取期间中的每一年

  8. 8

    是否有任何DateTime库支持Java的一年中的每季度和每周的某周?

  9. 9

    带有当年和上一年的每周范围范围的数据

  10. 10

    Java日历问题与添加一年

  11. 11

    一年增加几天-Java

  12. 12

    将一年添加到在Java脚本中选择的随机日期

  13. 13

    Java日期转换:返回一年中的不同星期

  14. 14

    在 MS SQL 中每周获取过去一年的记录

  15. 15

    Java Looping 一年从现在开始

  16. 16

    将一年和一天(例如2013216 = 2013年的第216天)转换为Java中的完整日期

  17. 17

    SSRS日期来自上一年,但选择了相同的工作日名称

  18. 18

    与上一年相比,记录平均增加

  19. 19

    如何从一年中的日期获取日期

  20. 20

    为什么Java的java.time.format.DateTimeFormatter#format(LocalDateTime)增加一年?

  21. 21

    如何在java中的两个日期之间获取周六和周日

  22. 22

    从0获取一年中的星期范围

  23. 23

    Java的说,一年0是闰年,但年0从来没有存在过

  24. 24

    PHP DateTime:获取与上一年相比的当前周/月/年间隔(开始-结束)

  25. 25

    C从日期获取一年中的某天

  26. 26

    获取一年中某天的完整日期

  27. 27

    在Excel中获取一年中某天的日期

  28. 28

    在 Unix (AIX) 中获取今天的日期减去一年

  29. 29

    如何获取这种格式的当前周日期范围(2017 年 3 月 20 日)?

热门标签

归档