曆法與時間

2021-08-22 05:23:36 字數 1950 閱讀 2327

public class gregoriancalendarextends calendargregoriancalendar 是 calendar 的乙個具體子類,提供了世界上大多數國家使用的標準日曆系統。

gregoriancalendar 是一種混合日曆,在單一間斷性的支援下同時支援儒略曆和格里高利歷系統,在預設情況下,它對應格里高利日曆創立時的格里高利歷日期(某些國家是在 1582 年 10 月 15 日創立,在其他國家要晚一些)。可由呼叫方通過呼叫 setgregorianchange() 來更改起始日期。

歷史上,在那些首先採用格里高利曆的國家中,1582 年 10 月 4 日(儒略曆)之後就是 1582 年 10 月 15 日(格里高利歷)。此日曆正確地模擬了這些變化。在開始格里高利歷之前,gregoriancalendar 實現的是儒略曆。格里高利曆和儒略曆之間的惟一區別就是閏年規則。儒略曆指定每 4 年就為閏年,而格里高利曆則忽略不能被 400 整除的世紀年。

gregoriancalendar 可實現預期的 格里高利曆和儒略曆。也就是說,可以通過在時間上無限地向後或向前外推當前規則來計算日期。因此,對於所有的年份,都可以使用 gregoriancalendar 來生成有意義並且一致的結果。但是,採用現代儒略曆規則時,使用 gregoriancalendar 得到的日期只在歷史上從公元 4 年 3 月 1 日之後是準確的。在此日期之前,閏年規則的應用沒有規則性,在 45 bc 之前,甚至不存在儒略曆。

在格里高利歷創立以前,新年是 3 月 25 日。為了避免混淆,此日曆始終使用 1 月 1 日為新年。如果想要格里高利歷轉換之前並且處於 1 月 1 日和 3 月 24 日之間的日期,則可以進行手動調整。

為 week_of_year 欄位所計算的值的範圍從 1 到 53。一年的第乙個星期始於 getfirstdayofweek() 的最早 7 天,至少包含該年的 getminimaldaysinfirstweek() 各天。這取決於 getminimaldaysinfirstweek()、getfirstdayofweek() 的值以及 1 月 1 日是星期幾。一年的第乙個星期和下一年的第乙個星期之間的各個星期按順序從 2 到 52 或 53(根據需要)進行編號。

例如,1998 年 1 月 1 日是星期四。如果 getfirstdayofweek() 為 monday,並且 getminimaldaysinfirstweek() 為 4(這些值反映了 iso 8601 和很多國家標準),則 1998 年的第乙個星期開始於 1997 年 12 月 29 日,結束於 1998 年 1 月 4 日。但是,如果 getfirstdayofweek() 為 sunday,那麼 1998 年的第乙個星期開始於 1998 年 1 月 4 日,結束於 1998 年 1 月 10 日;1998 年頭三天是 1997 年第 53 個星期的一部分。

為 week_of_month 欄位所計算的值的範圍從 0 到 6。乙個月的第乙個星期(week_of_month = 1 的日期)是該月至少連續 getminimaldaysinfirstweek() 天中的最早日期,結束於 getfirstdayofweek() 的前一天。與一年的第乙個星期不同,乙個月的第乙個星期可能短於 7 天,也不必從 getfirstdayofweek() 這一天開始,並且不包括前乙個月的日期。在第乙個星期之前該月日期的 week_of_month 為 0。

例如,如果 getfirstdayofweek() 為 sunday,getminimaldaysinfirstweek() 為 4,那麼 1998 年 1 月的第乙個星期是從 1 月 4 日星期日到 1 月 10 日星期六。這些天的 week_of_month 為 1。1 月 1 日星期四到 1 月 3 日星期六的 week_of_month 為 0。如果 getminimaldaysinfirstweek() 變為 3,則 1 月 1 日到 1 月 3 日的 week_of_month 為 1。

clear 方法將日曆字段設定為未定義。gregoriancalendar 為每個日曆字段使用以下預設值(如果該值未定義)。 字段

預設值

Atitit 基於時間戳的農曆日曆曆法日期計算

atitit.基於時間戳的農曆日曆曆法日期計算 1.農曆xx 年的大小月份根據萬年曆查詢12 農曆xx年1 月1日的時間戳獲取13 計算當年的時間戳與農曆日期的對應表,時間戳為key 日期為 val14.根據獲取的時間戳得到農曆日期2 2006 年大進的月份 13689 11,12 閏月的月份 no...

Atitit 基於時間戳的農曆日曆曆法日期計算

atitit.基於時間戳的農曆日曆曆法日期計算 1.農曆xx 年的大小月份根據萬年曆查詢12 農曆xx年1 月1日的時間戳獲取13 計算當年的時間戳與農曆日期的對應表,時間戳為key 日期為 val14.根據獲取的時間戳得到農曆日期2 2006 年大進的月份 13689 11,12 閏月的月份 no...

Atitit 基於時間戳的農曆日曆曆法日期計算

atitit.基於時間戳的農曆日曆曆法日期計算 1.農曆xx 年的大小月份根據萬年曆查詢12 農曆xx年1 月1日的時間戳獲取13 計算當年的時間戳與農曆日期的對應表,時間戳為key 日期為 val14.根據獲取的時間戳得到農曆日期2 2006 年大進的月份 13689 11,12 閏月的月份 no...