TimeUnit.DAYS.convert(
Math.abs(
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("30-03-2020 00:00:00").getTime() -
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("1-03-2020 00:00:00").getTime()
),
TimeUnit.MILLISECONDS)
結果は28ですが、29になるはずです。
タイムゾーン/場所に問題があるのでしょうか?
—
アンディターナー
私は誰かが行く会議に参加したいと思います。「さて、タイムゾーンがちょっとわかったので、100%arseモードにして、夏時間と呼ばれるこのことを実装します。これは、アシッドの旅の後に夢の中で思いついたものです。昨夜。"
—
MonkeyZeus
この問題は、夏時間のあるタイムゾーンにあるコンピューターでのみ発生します。夏時間のないタイムゾーンでは正しい日数(29)が得られます。
—
Gopinath
SimpleDateFormat
廃止されたため、今後は使用しないでください。java.time
代わりにのパッケージを使用してください。中SimpleDateFormat
の場合、使用DateTimeFormatter
。Java 7の場合は、以下のAndy Turnerのコメントを参照してください。