在java中将UTC毫秒转换为UTC日期

时间:2016-01-29 06:35:49

标签: date

我正在处理面临时区问题的应用程序。

想要将UTC毫秒转换为UTC日期对象。

我已经尝试了

   TimeZone utcZone = TimeZone.getTimeZone("UTC");    
   Calendar date = getInstance(utcZone);  
   date.setTimeInMillis(utcMillisecond);  
   date.getTime();

date.getTime仍然返回我当地的EST时区。我知道我从UI获得的毫秒数是UTC毫秒。

1 个答案:

答案 0 :(得分:1)

旧类java.util.Calendar以静默方式应用了JVM的当前默认时区。你以为它会是UTC,但事实并非如此。

java.time

您正在使用旧的麻烦的日期时间类,这些类已被Java 8及更高版本中的java.time框架取代。

我假设“UTC毫秒”是指自1970年第一个UTC以来1970-01-01T00:00:00Z以来的毫秒数。这可以直接用于创建java.time.Instant,即UTC时间轴上的一个时刻。

顺便提一下,java.time具有纳秒分辨率,比毫秒更精细。

Instant instant = Instant.ofEpochMilli( yourMillisNumber );

调用toString以符合ISO 8601标准的格式生成String作为日期时间值的文本表示。例如:

  

2016-01-23T12:34:56.789Z