【发布时间】:2023-03-06 02:09:01
【问题描述】:
我有一个 GregorianCalendar,我正在尝试设置时间。我从一个日历中获取日期,从另一个日历中获取时间。除了 DST 切换日的凌晨 2 点之外,它大部分都有效。
例如,日期为 2013 年 3 月 10 日,时间为凌晨 2:40,目标输出为 2013 年 3 月 10 日凌晨 2:40,我得到 2013 年 3 月 10 日凌晨 3:40:
GregorianCalendar reportingDate = //some instance with a relevant date (in this case 3/10/2013)
GregorianCalendar targetTime = //some instance with a relevant time (in this case 2:40AM)
Calendar combination = Calendar.getInstance();
combination.set(Calendar.YEAR, reportingDate.get(Calendar.YEAR));
combination.set(Calendar.MONTH, reportingDate.get(Calendar.MONTH));
combination.set(Calendar.DAY_OF_YEAR, reportingDate.get(Calendar.DAY_OF_YEAR));
combination.set(Calendar.HOUR, targetTime.get(Calendar.HOUR));
combination.set(Calendar.AM_PM, targetTime.get(Calendar.AM_PM));
combination.set(Calendar.MINUTE, targetTime.get(Calendar.MINUTE));
combination.set(Calendar.SECOND, targetTime.get(Calendar.SECOND));
一旦代码在日历组合上设置了 AM_PM,时间就会切换到凌晨 3:40。我希望它不要切换。我认为这与将目标时间日历创建为纪元日期的时间有关,但我希望目标时间的具体日期并不重要......
【问题讨论】:
-
我遇到了类似的问题,这是因为您的 PC 的时区不支持应用从标准时间更改为夏令时 (DST) 的日期的凌晨 2:00,例如(UTC-06:00) 中部时间(美国和加拿大)。我什至尝试使用 joda 库但没有成功(也许我没有付出足够的努力)。我也想得到这个话题的答案。
-
几年过去了,“这就是时间的运作方式”这样的答案让我心平气和,你失去了一个小时。就是这样。我的用户非常非常困惑,但是一些解释和他们在同一页上。更多关于取消夏令时的论据!