yyyy-MM-dd HH:mm:ss,SSS
以毫秒为单位获取时间的简单方法吗?我从new Date()
or中找到了一些如何执行此操作的信息Calendar.getInstance()
,但找不到是否可以从 long 中完成(例如1344855183166
)
6 回答
我以为你问过如何以这种格式获取时间“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);
...
如果你有纪元毫秒。下面的行应该工作,
Instant.ofEpochMilli(millis).toString()
正如 Sridhar Sg 的代码所说:
Instant.ofEpochMilli(millis).toString()
将起作用,因为该toString()
方法将为您提供 ISO-8601 扩展格式表示(带分隔符)。
请注意,除非您使用ThreeTen Backport(Java 6 和 7 的反向移植),否则Instant
该类仅适用于 JDK 8(包的介绍)。java.time
如果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
。
构造Date
函数确实需要很长时间(毫秒)不是吗?
问候,
该问题未提及时区,因此我假设您的意思是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 ) );
运行时……</p>
That moment: 2012-08-13T10:53:03.166Z
如果原始海报的意思是波兰时区……</p>
// © 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 ) );
运行时……</p>
That moment in Poland: 2012-08-13T12:53:03.166+02:00
使用new Date(millis);
构造函数Date
new Date(1344855183166L);