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)
Sonuç 28, ancak 29 olmalıdır.
Sorun saat dilimi / yeri olabilir mi?
java.time
[Java 7'de olduğunuzu not etsem de ], ThreeTenBp , Joda).
TimeUnit
DST hakkında hiçbir şey bilmiyormuş gibi davranmaz. Javadoc'un dediği gibi: Bir nanosaniye mikrosaniyenin binde biri, mikrosaniye milisaniyenin binde biri, saniyenin binde biri milisaniye, bir dakika altmış saniye, bir dakika altmış dakika ve bir gün olarak tanımlanır. yirmi dört saat . --- DST yılın 2 günü tam 24 saat olmamasına neden TimeUnit
olduğundan, DST söz konusu olduğunda yanlış olur.
SimpleDateFormat
Artık kullanılmıyor, çünkü artık kullanılmıyor.java.time
Bunun yerine paketleri kullanın. BuSimpleDateFormat
durumda, kullanınDateTimeFormatter
. Java 7 olması durumunda, aşağıdaki Andy Turner'ın yorumuna bakın.