【发布时间】:2015-07-02 09:46:46
【问题描述】:
我正在尝试使用 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。日历上设置的时区似乎与打印日期无关。
UTC的实际时间由以下python sn-p显示:
import datetime
ms = 1427590800000
print datetime.datetime.utcfromtimestamp(ms/1000.0) # 2015-03-29 01:00:00
将默认 JVM 时区设置为“UTC”会导致打印正确的日期,但这似乎不是一个安全的解决方案。
【问题讨论】:
-
java convert milliseconds to time format 的可能副本。 请在发帖前搜索 StackOverflow。这个话题已经被讨论过很多次次了。
-
链接的问题没有提到UTC,并且接受的答案没有在格式上设置时区的必要步骤。
-
Java it to milliseconds 的副本,Date in to UTC format Java 的副本等等。我再问一遍,发帖前请搜索StackOverflow。
标签: java date datetime timezone utc