【问题标题】:A bizarre phenomenon in my java program我的java程序中的一个奇怪现象
【发布时间】:2013-07-09 17:24:31
【问题描述】:

在我的java程序运行时发现了一个奇怪的现象,看看我的代码:

System.out.println(" date " + new Date(1359931355141L).toGMTString() );

此语句的输出是“日期 3 2013 年 2 月 22:42:35 GMT”,并且

System.out.println(" date " + new Date(1359931355141L).getDate() );

这样的输出是 "date 4" ,看,这里为什么不 3 ???

我无法弄清楚我的程序出了什么问题;我怀疑我的 JVM 是否遇到错误。
伙计们,你想在你的 JVM 上测试这两个语句吗?

【问题讨论】:

  • 你运行这个程序的机器的时区是什么?
  • 你在哪里?如果时间是格林威治标准时间 22:42,西班牙是格林威治标准时间 +1,但现在我们是 +2 因为夏令时,所以同一时刻是第二天的 00:42

标签: java gmt java.util.date


【解决方案1】:

因为您居住在中欧东部(时区至少为 GMT+1.5Hr)。

getDate()(顺便说一句已弃用)返回月份中的某天,并且它返回4(而不是3),因为在您的时区,那个纪元时间已经进入第二天,而在英格兰 (GMT),它仍然是当月的 3

【讨论】:

    【解决方案2】:

    你的语言环境是什么?如果是 2013 年 2 月 3 日 22:42:35 GMT,但您的语言环境是 GMT+10,那么您的本地日期将是 4。一点也不奇怪,这是预期的行为

    【讨论】:

      【解决方案3】:

      嗯。这取决于您当前的语言环境。如果 GMT 时区,GMT 会给你时间。 getDate 将为您提供您所在地区的时间。

      【讨论】:

        猜你喜欢
        • 2011-12-20
        • 1970-01-01
        • 1970-01-01
        • 2021-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多