Answer by NPE是正確的。
解決方案的代碼示例
這裏是代碼正確處理這種情況。
如果您的輸入數字是1970年開始的時間以UTC爲單位的毫秒數,則創建一個Instant
。
Instant instant = Instant.ofEpochMilli(1406865600000L);
確定日期需要時區。對於任何特定的時刻,日期因地區而異。例如,巴黎午夜過後的幾分鐘,法國是一個新的一天,而在魁北克蒙特利爾仍然是「昨天」。
因此,通過應用所需的/預期的時區,將Instant
調整爲ZonedDateTime
對象。
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime zdt = instant.atZone(z);
詢問一週中的哪一天。 Java代表enum DayOfWeek
中的每週七天中的每一天。
DayOfWeek dow = zdt.getDayOfWeek();
問DayOfWeek
對象的星期幾的名稱翻譯成在Locale
定義的人類語言。
String output = dow.getDisplayName(TextStyle.FULL_STANDALONE , Locale.CANADA_FRENCH);
轉儲到控制檯。結果,至少對America/Montreal
而言,與您預期的一樣,即8月1日星期五。
System.out.println ("input: " + input + " | instant: " + instant + " | zdt: " + zdt + " | dow: " + dow + " | output: " + output);
輸入:1406865600000 |即時:2014-08-01T04:00:00Z | zdt:2014-08-01T00:00-04:00 [America/Montreal] | dow:星期五|輸出:vendredi