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。
时区/位置可能是问题吗?
不要准时做数学。使用适当的时间库((
—
安迪·特纳
java.time
尽管我注意到您使用的是Java 7),ThreeTenBp和Joda)。
我很想参加一个有人去的会议,“好吧,现在我们已经确定了时区,让我们走100%的arse模式并实现这种称为夏令时的事情,这是我酸之旅之后梦a以求的事情昨晚。”
—
MonkeyZeus
仅在具有夏时制的时区中的计算机上会出现此问题。它在没有夏令时的时区中给出正确的天数(29)!
—
Gopinath
SimpleDateFormat
,因为它已经过时了。使用包来自java.time
。如果SimpleDateFormat
是,请使用DateTimeFormatter
。如果是Java 7,请参见下面的Andy Turner的评论。