- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Joda-Time 版本 2.9.9 中,我想删除 DateTime
变量的时间部分。
仅针对时区 Asia/Tehran
和某些日期(例如(2036-03-21、2037-03-21,...),它返回 1:00:00
结果的时间部分。
我也检查了 Joda-Time 源代码,但我没有发现任何问题。
代码是:
DateTime dt = new DateTime(2036, 03, 21, 10, 0, DateTimeZone.forID(Asia/Tehran));
dt = dt.withTimeAtStartOfday();
实际结果:
2036-03-21T01:00:00.000+04:30
预期结果:
2036-03-21T00:00:00.000+04:30
时间不为零。这只发生在 Asia/Tehran
区域。
我的系统配置:
我通过将DateTime
转换为LocalDate
解决了这个问题,但我想知道为什么会出现这个问题?
最佳答案
这是因为伊朗在 3 月 21 日或 22 日的 00:00(以天文春分点为准)从标准时间切换到夏令时。在 2036 年,这发生在 21 日。 In 2018 it happens to fall on the 22nd .
简而言之,时间从2036/03/20 24:00
跳到2036/03/21 01:00
。那天从午夜到凌晨 1 点不存在。
在编写处理时间的代码时,请始终牢记与预期结果的意外小偏移几乎肯定是由于管理时间更改造成的。对于历史日期更是如此,其中偏移量可以是任意数量的分钟和秒,而不仅仅是整小时或半小时。
关于java - Joda-time DateTime.withTimeAtStartOfDay() 在亚洲/德黑兰时区的日期 (2036,3,21) 中产生错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781357/
在Joda-Time图书馆,DateTime类提供了一种方法 withTimeAtStartOfDay获得当天的第一刻。您可能会认为那一刻是“午夜”。第一时刻通常是时间 00:00:00.000 但并
在 Joda-Time 版本 2.9.9 中,我想删除 DateTime 变量的时间部分。 仅针对时区 Asia/Tehran 和某些日期(例如(2036-03-21、2037-03-21,...),
我是一名优秀的程序员,十分优秀!