簡體   English   中英

Calendar.DAY_OF_WEEK_IN_MONTH等效於java8中的ZonedDateTime

[英]Calendar.DAY_OF_WEEK_IN_MONTH equivalent in ZonedDateTime in java8

我想檢查感恩節(11月的第四個星期四)。
我的ZonedDateTime2019-11-23T08:43:14.699-07:00[America/Los_Angeles]

如何使用java 8 ZonedDateTime api檢查是否是星期四

在日歷中,我們有Calendar.DAY_OF_WEEK_IN_MONTH來計算一個月的周數。 ZonedDateTime有沒有這樣的東西?

我有這個使用日歷。

// 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實現此ZonedDateTime

你需要的是每月一致的一周。 該月的第一個對齊周是從該月的1到7,因此包含該月的第一個星期四,無論該月的哪一天開始。 第二個對齊的一周是本月的8到14,等等。

    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日沒有打印任何內容。 請嘗試使用正確的日期:

    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]正在感恩節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM