当前位置: 首页 > 面试题库 >

Java SimpleDateFormat:一个小时的错误

梁宪
2023-03-14
问题内容

我不需要整个故事来澄清我的问题,所以我只显示代码(仅是示例)。我的结果怎么会有差异?

long millis = 2305293L;
System.out.println(
    millis + "ms = " + 
    (millis / 1000) + "s = " + 
    (millis / 1000 / 60) + "m");
System.out.println(
    new SimpleDateFormat("HH:mm:ss").
    format(
        new Date(millis)
        )
    );

输出量

2305293ms = 2305s = 38m
01:38:25

问题答案:

如果您在伦敦或巴黎,则时区为1970年1月1日GMT + 1。

由于@ARC在评论中解释的原因,英国于1968年2月18日至1971年10月31日使用了GMT + 1或UTC + 1

我可以转换很长时间而不会干扰任何时区吗?

将TimeZone设置为GMT。

long millis = 2305293L;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(sdf.format(new Date(millis)));

版画

00:38:25.293


 类似资料:
  • 下面,我有我试图使用的代码。它总是命中捕捉,返回空。月和日都是整数,它们已经过检查,以确保它们在现有日期内。不管怎样,我用“05”测试一个月,用“02”测试一天。由于某种原因, ##/## 输入不起作用吗? 编辑:我正在尝试格式化此输出,使其看起来像“May 02”。当我查看文档时,我看到页面的很大一部分专门用于格式化输出。为什么我的格式不是这样?

  • PHP 5.2.17。服务器上的时间是9:40,时区是欧洲/莫斯科: php.ini时区设置为:date.timezone欧洲/莫斯科 date_default_timezone_set()设置的时区是欧洲/莫斯科 但是date()函数返回一小时后的时间: 输出: 我该如何解决这个问题?我已经尝试安装了最新的 /usr/share/zoneinfo,结果相同

  • 问题内容: 我从控制器中的java()发送此日期,输入的类型为 如下: 当我得到这个日期与ajax为: 转换成 那么,为什么我得到错误的一小时约会呢? 解 我们通过以下方式解决它 因为这是夏令时(DST)或夏令时的问题。好文章 问题答案: 我认为这可能是 夏令时的 问题。您可以检查客户端的时区和服务器的时区。(Web服务器或SQL Server)

  • 我将teformat构造函数简化为 我正在解析字符串“2013-09-29T18:46:19Z”。 我读到这里Z代表时区。但是当我在控制台上打印这个日期时,它会为返回的日期打印IST timezne。 现在我的问题是我的输出是对还是错?

  • 在1.3.2节我们谈到了运行时错误,这是直到程序启动运行之后才会出现的错误。 到目前为止,读者可能并未见过运行时错误,因为我们没做过可能导致运行时错误的事情。不过现在要遇到了。使用[]操作符时,如果提供了一个负的或大于总长度-1的索引值,就会出现运行时错误,并给出类似下面这种提示信息: index out of range: 6, string: banana 请在你的开发环境中尝试一下,看看

  • 因为某种奇怪的原因增加了一个小时。这也是唯一一个让我有这种行为的日期,其他时间等工作都很好。它总是'02'代表行为怪异的小时。 有什么想法吗?