如何在Java中从毫秒开始获取ISO格式?

时间:2012-08-13 11:11:03

标签: java date

以毫秒为单位获取yyyy-MM-dd HH:mm:ss,SSS的简单方法是什么?我已经从new Date()Calendar.getInstance()找到了一些有关如何执行此操作的信息,但无法找到是否可以从长时间内完成此操作(例如1344855183166

6 个答案:

答案 0 :(得分:9)

我以为你曾经问过如何以这种格式获得时间“yyyy-MM-dd HH:mm:ss,SSS”

一种方法是使用java的SimpleDateFormat: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

请注意,这不是线程安全的。

...

Date d = new Date(1344855183166L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
String dateStr = sdf.format(d);

...

答案 1 :(得分:2)

使用new Date(millis);

Date构造函数
new Date(1344855183166L);

答案 2 :(得分:2)

Date构造函数需要很长时间(毫秒)不是吗?

此致

答案 3 :(得分:2)

问题没有提到时区,所以我假设你的意思是UTC / GMT。这个问题没有解释“ISO格式”,所以我假设你的意思是ISO 8601。这恰好是第三方Joda-Time 2.3库的默认设置。 是线程安全的。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.

System.out.println( "That moment: " + new org.joda.time.DateTime( 1344855183166L, org.joda.time.DateTimeZone.UTC ) );

跑步时......

That moment: 2012-08-13T10:53:03.166Z

如果原始海报意味着波兰时区......

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.

// Time Zone list… http://joda-time.sourceforge.net/timezones.html
org.joda.time.DateTimeZone warsawTimeZone = org.joda.time.DateTimeZone.forID( "Europe/Warsaw" );
System.out.println( "That moment in Poland: " + new org.joda.time.DateTime( 1344855183166L, warsawTimeZone ) );

跑步时......

That moment in Poland: 2012-08-13T12:53:03.166+02:00

答案 4 :(得分:2)

如果您有新纪元。下面的行应该起作用,

isDone

答案 5 :(得分:1)

如Sridhar Sg的代码所述:

Instant.ofEpochMilli(millis).toString()

将作为toString()方法的工作,将为您提供ISO-8601扩展格式表示(带分隔符)。

请注意,除非您使用ThreeTen Backport(Java 6的反向端口),否则Instant仅在JDK 8 中有效(java.time包的介绍)。和7。

如果millis = 1603101879234,则上述方法将返回:2020-10-19T10:04:39.234Z

如果您需要其他类型的格式,例如ISO-8601基本格式(中间没有除T的分隔符),则可以这样自定义DateTimeFormatter

Instant instant = Instant.ofEpochMilli(millis);
DateTimeFormatter outFormatter = DateTimeFormatter
        .ofPattern("yyyyMMdd'T'HHmmss.SSSX") // millisecond precision
        .withZone(ZoneId.of("UTC"));

String basicIso = outFormatter.format(instant);

对于相同的millis = 1603101879234,上述方法将产生:20201019T100439.234Z