Bri*_*isk 0 java scala date gregorian-calendar
我正在创建3个GregorianCalendar对象:
第一天和第二天之间的日差为96天.第一个和第三个之间的日差是...... 96天.说呀?
对Scala代码表示歉意,但是Java-heads应该能够得到正在发生的事情:
def test(): Unit = {
val start = new GregorianCalendar(2018, 11, 4)
val laterA = new GregorianCalendar(2018, 11, 4)
laterA.add(Calendar.DATE, 96)
val laterB = new GregorianCalendar(2018, 11, 4)
laterB.add(Calendar.DATE, 97)
println(ChronoUnit.DAYS.between(start.toInstant, laterA.toInstant))
println(ChronoUnit.DAYS.between(start.toInstant, laterB.toInstant))
}
Run Code Online (Sandbox Code Playgroud)
以上打印如下:
96
96
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
您必须位于美国的区域设置(或与美国同时启动夏令时的区域设置).2019年,夏令时开始于2019年3月10日星期日凌晨2点.
自2018年12月4日起增加96天收益于2019年3月10日.从2018年12月4日起增加97天收益率2019年3月11日.
格式化和输出laterA和laterB产量:
2019-03-10 00:00:00
2019-03-11 00:00:00
Run Code Online (Sandbox Code Playgroud)
请注意,由于DST(在美国),这两个日期之间有23个小时.
但该between方法截断了小数单位.
计算返回一个整数,表示两个时间之间的完整单位数.例如,11:30到13:29之间的小时数仅为1小时,因为它是两小时的一分钟.
因此,返回96天,23小时(因DST而不是97天)的差异96.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |