我正在尝试将以下字符串格式转换为时间戳
Mon Oct 29 14:33:09 MYT 2018
至
2018-10-29T14:33:09.756Z
这是我的代码
val format = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" )
print(LocalDateTime.parse(approximateArrivalTimestamp.toString(), format).atZone(ZoneId.systemDefault()).toInstant().toString())
,输出为
2018-10-29T14:33:09Z
如何使时间戳达到2018-10-29T14:33:09.756Z
之类的毫秒粒度
我们非常感谢您的帮助。
答案 0 :(得分:0)
val dateString = "Mon Oct 29 14:33:09 MYT 2018"
val formatter = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" )
val date = LocalDateTime.parse(dateString, formatter).atZone(ZoneId.systemDefault())
val formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX")
date.format(formatter2)
出于某些奇怪的原因,您将其解释为LocalDateTime
。我认为您应该使用ZonedDateTime
来解析日期,然后将其转换为您的时区(它将正确转换您当地时区中的日期)。
val dateString = "Mon Oct 29 14:33:09 MYT 2018"
val formatter = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" )
val date = ZonedDateTime.parse(dateString, formatter).withZoneSameInstant(ZoneId.systemDefault())
val formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX")
date.format(formatter2)
如果您希望日期带有Z
(Z表示时区为UTC),则必须将其转换为UTC。
val date2 = date.withZoneSameInstant(ZoneId.of("UTC"))
date2.format(formatter2)
// String = 2018-10-29T06:33:09.000Z