【问题标题】:Java simpleDateFormat conversionJava simpleDateFormat 转换
【发布时间】:2013-03-15 16:32:02
【问题描述】:

尝试执行日期比较:

date1=new SimpleDateFormat("yy-MM-dd HH").parse("12-03-25 02") 等于

date2=new SimpleDateFormat("yy-MM-dd HH").parse("12-03-25 03")

有什么问题?以date1.getHour 我得到3

欢迎提出想法

【问题讨论】:

  • 我得到2date1.getHours()。一定有其他代码影响了您的结果。
  • 无法在JDK 6上重现,显示实际程序?
  • 我在 jdk 7 中也得到了 2
  • 会不会有复制粘贴的问题?有两个“date2”,没有“date1”?
  • 删除了我的答案,因为它并没有真正回答任何问题。在 jdk6 上,我也得到 2。你确定你不是在 date2 上得到小时数吗?

标签: java date simpledateformat


【解决方案1】:

2012 年 3 月 25 日是许多国家/地区完成夏令时切换的日子,通常在 2 点。因此,在您所在的地区,凌晨 2 点和凌晨 3 点是同一时间。这就是你看到这个的原因。

【讨论】:

  • 那么如何处理这样的问题呢? (与我的国家核对,3 月 25 日)
  • 好收获。对其他所有人:您可以通过在构造 SimpleDateFormats 之前调用 TimeZone.setDefault(TimeZone.getTimeZone("CET")); 来确认这一点。
  • 这不是问题。结果是正确的。 2AM 和 3AM 代表同一时刻,因此打印 2 或 3 无关紧要。
  • @JB Nizet 不是真的,考虑到您在 2 点和 3 点完成了日志记录......那会是什么?
  • 2 和 3 是同一小时。那天,2点,已经3点了。 2 点到 3 点之间有 0 毫秒。 10 月会有问题,3 点又是 2 点。如果这很重要,请考虑使用明确的格式,例如时间戳,而不是挂钟时间。
猜你喜欢
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2023-04-05
  • 1970-01-01
  • 2022-07-20
  • 2021-11-10
相关资源
最近更新 更多