4
datetime.datetime.now().toordinal()
をjavaに複製する最良の方法は何ですか? 私はエポックを使ってみましたが、結果はどこにもありません。Pythonのtoordinal()のJavaに相当しますか?
datetime.datetime.now().toordinal()
をjavaに複製する最良の方法は何ですか? 私はエポックを使ってみましたが、結果はどこにもありません。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日には、それはPythonの出力と一致している736073
を出力します。
LocalDate
から、toEpochDay()
でエポックの日を取得できます。あなたが見inside the current implementationを取る場合、あなたはそれが実際に年0からの日数の合計数を計算し、一定の
DAYS_PER_CYCLE = 146097
は、400年周期の日数です
static final long DAYS_0000_TO_1970 = (DAYS_PER_CYCLE * 5L) - (30L * 365L + 7L);
であることを差し引くことがわかります。その定数は公開されていないため、直接再利用することはできません。
toordinal()
のPythonドキュメントからは、1に序数が1と定義されています。上記のJava APIの計算では、代わりに年が0であると仮定しています。
試した結果とその結果を投稿できますか? –
['toordinal()']のソースは次のとおりです(https://hg.python.org/cpython/file/3a9b47b062b9/Lib/datetime.py#l57)。本当にこの動作が必要な場合は、これをJavaに移植したいと思うでしょう。 – dimo414