gpt4 book ai didi

java - 如何使用 Java 将纪元中的毫秒计数打印为 UTC 中的日期时间?

转载 作者:行者123 更新时间:2023-12-01 11:21:25 26 4
gpt4 key购买 nike

我正在尝试使用 Java 将以毫秒为单位的时间格式化为 UTC 格式的日期。我有以下代码:

long ms = 1427590800000;
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.ROOT);
cal.setTimeInMillis(ms);
Date date = cal.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd hh:mm:ss");
System.out.println(dateFormat.format(date)); // 2015-03-29 02:00:00

这是打印 BST 时间(即使用默认时区)而不是 UTC 时间。日历上设置的时区似乎与打印的日期没有关系。

以下 python 代码片段显示了 UTC 中的实际时间:

import datetime
ms = 1427590800000
print datetime.datetime.utcfromtimestamp(ms/1000.0) # 2015-03-29 01:00:00

将默认 JVM 时区设置为“UTC”会导致打印正确的日期,但这似乎不是一个安全的解决方案。

最佳答案

java.time

现代方法使用业界领先的 java.time 类。

解析为瞬间,UTC 中的一个时刻,分辨率为纳秒。

long input = 1_427_590_800_000L ;
Instant instant = Instant.ofEpochMilli( input ) ;

ISO 8601

生成标准字符串ISO 8601格式。

String output = instant.toString() ;

2015-03-29T01:00:00Z

<小时/>

Table of date-time types in Java, both modern and legacy

<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

您可以直接与数据库交换java.time对象。使用JDBC driver符合JDBC 4.2或稍后。不需要字符串,不需要 java.sql.* 类。

从哪里获取java.time类?

ThreeTen-Extra项目通过附加类扩展了 java.time。该项目是 java.time future 可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter ,和more .

关于java - 如何使用 Java 将纪元中的毫秒计数打印为 UTC 中的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com