4
在java中複製datetime.datetime.now().toordinal()
的最佳方法是什麼? 我嘗試使用時代,但結果遠不及。Python的toordinal()相當於Java?
在java中複製datetime.datetime.now().toordinal()
的最佳方法是什麼? 我嘗試使用時代,但結果遠不及。Python的toordinal()相當於Java?
沒有任何直接的方法可以使用Java Time API查詢這些信息,但是可以計算它。
public static void main(String[] args) {
long ordinal = LocalDate.now().toEpochDay() + (146097 * 5L) - (31L * 365L + 7L);
System.out.println(ordinal);
}
運行的今天,2016年4月19日,它輸出736073
,這與Python的輸出一致。
從LocalDate
可以得到toEpochDay()
的大紀元日。如果你看看inside the current implementation,你會發現,它實際上計算天的總數,因爲0期和減去與恆
static final long DAYS_0000_TO_1970 = (DAYS_PER_CYCLE * 5L) - (30L * 365L + 7L);
其中DAYS_PER_CYCLE = 146097
是天在一個400年的週期數。這個常數不是公開的,所以我們不能直接重用它。
從toordinal()
的Python文檔中,它定義第1年的序數爲1.上面的Java API的演算假設它是第0年,所以我們只需要對此進行調整。
你能發表你試過的和結果嗎? –
這是['toordinal()']的源代碼(https://hg.python.org/cpython/file/3a9b47b062b9/Lib/datetime.py#l57);如果您確實需要這種行爲,您可能只想將其移植到Java。 – dimo414