将当前时间以毫秒为单位转换为日期Scala中的时间格式

问题描述:

真的很简单的问题,但我无法在任何地方找到简单的解释。我想获得当前时间以毫秒为单位:将当前时间以毫秒为单位转换为日期Scala中的时间格式

val current = System.currentTimeMillis() 

并将结果转换成日期时间格式,如2017-02-11T15:16:38.437Z。 这是针对斯卡拉的,如果问题不清楚的话。

+2

的[如何转换毫秒到Java中的“X分钟,x秒”?](可能的复制http://stackoverflow.com/questions/625433/how-到转换-毫秒到X-分钟-X-第二s-in-java) –

+0

如果两个问题都与相同的语言有关,那么这将是重复的。 – DarthBinks911

+2

Scala没有自定义'scala.time'库。它建立在你可以使用'java.time'的基础上。我认为你不会发现任何内置的东西。您始终可以使用外部依赖项,例如[nscala-time](https://github.com/nscala-time/nscala-time) –

嗯......你可以使用Java API的时间做的是,

首先,你需要将这些划时代毫秒转换为日期时间对象,

import java.time.{Instant, ZoneId, ZonedDateTime} 

val timeInMillis = System.currentTimeMillis() 
//timeInMillis: Long = 1486988060666 

val instant = Instant.ofEpochMilli(timeInMillis) 
//instant: java.time.Instant = 2017-02-13T12:14:20.666Z 

val zonedDateTimeUtc = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) 
//zonedDateTimeUtc: java.time.ZonedDateTime = 2017-02-13T12:14:20.666Z[UTC] 

val zonedDateTimeIst = ZonedDateTime.ofInstant(instant, ZoneId.of("Asia/Calcutta")) 
//zonedDateTimeIst: java.time.ZonedDateTime = 2017-02-13T17:44:20.666+05:30[Asia/Calcutta] 

现在,你想要得到这些格式化字符串,

val dateTimeFormatter1 = DateTimeFormatter.ISO_OFFSET_DATE_TIME 

val zonedDateTimeUtcString1 = dateTimeFormatter1.format(zonedDateTimeUtc) 
//zonedDateTimeUtcString1: String = 2017-02-13T12:24:19.248Z 

val zonedDateTimeIstString1 = dateTimeFormatter1.format(zonedDateTimeIst) 
//zonedDateTimeIstString1: String = 2017-02-13T17:54:19.248+05:30 

val dateTimeFormatter2 = DateTimeFormatter.ISO_ZONED_DATE_TIME 

val zonedDateTimeUtcString2 = dateTimeFormatter.format(zonedDateTimeUtc) 
//zonedDateTimeUtcString2: String = 2017-02-13T12:20:11.813Z[UTC] 

val zonedDateTimeIstString2 = dateTimeFormatter.format(zonedDateTimeIst) 
//zonedDateTimeIstString2: String = 2017-02-13T17:50:11.813+05:30[Asia/Calcutta]