我是靠谱客的博主 害羞黄蜂,这篇文章主要介绍Java8中ZonedDateTime中的Calendar.DAY_OF_WEEK_IN_MONTH等效项,现在分享给大家,希望可以做个参考。

我正在尝试检查感恩节(11月4日星期四).
我的ZonedDateTime为2019-11-23T08:43:14.699-07:00 [America / Los_Angeles]

 

如何使用Java 8 ZonedDateTime API检查是否在星期四第4周

在日历中,我们有Calendar.DAY_OF_WEEK_IN_MONTH来计算一个月中的星期数. ZonedDateTime中是否有此类内容?

我有这个使用日历.

 

复制代码
1
2
3
4
5
6
// check Thanksgiving (4th Thursday of November) if (cal.get(Calendar.MONTH) == Calendar.NOVEMBER && cal.get(Calendar.DAY_OF_WEEK_IN_MONTH) == 4 && cal.get(Calendar.DAY_OF_WEEK) == Calendar.THURSDAY) { return false; }

如何使用ZonedDateTime实现此目的?

最佳答案

您需要的是每月的一致星期.该月的第一个对齐周是从该月的1日到7日,因此包含该月的第一个星期四,无论该月是在一周的哪一天开始.第二个对齐的星期是该月的8到14,依此类推.

 

 

复制代码
1
2
3
4
5
6
ZonedDateTime zdt = ZonedDateTime.parse("2019-11-23T08:43:14.699-07:00[America/Los_Angeles]"); if (zdt.getMonth().equals(Month.NOVEMBER) && zdt.get(ChronoField.ALIGNED_WEEK_OF_MONTH) == 4 && zdt.getDayOfWeek().equals(DayOfWeek.THURSDAY)) { System.out.println("" + zdt + " is on Thanksgiving"); }

由于感恩节是今年11月28日,因此上述摘要测试(11月23日)不会打印任何内容.试试正确的日子:

 

复制代码
1
ZonedDateTime zdt = ZonedDateTime.parse("2019-11-28T17:34:56.789-07:00[America/Los_Angeles]");

2019-11-28T16:34:56.789-08:00[America/Los_Angeles] is on Thanksgiving

最后

以上就是害羞黄蜂最近收集整理的关于Java8中ZonedDateTime中的Calendar.DAY_OF_WEEK_IN_MONTH等效项的全部内容,更多相关Java8中ZonedDateTime中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部