从scala中的长(时间戳)获取可读日期的简单方法

时间:2018-11-20 12:46:30

标签: scala apache

我的问题很简单

如果我这样做:

var start = System.currentTimeMillis

我得到:

start: Long = 1542717303659

如何使字符串看起来像人眼可读?

例如:“ 20/11/2018 13:30:10”

3 个答案:

答案 0 :(得分:3)

您可以使用java.time库,例如:

  val formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss")
  formatter.format(LocalDateTime.now)

如果只有时间戳,此解决方案会变得更加复杂:

formatter.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneId.of("UTC")))

然后我要使用java.text.SimpleDateFormat

new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(System.currentTimeMillis())

返回时间戳记:

new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse( "02/12/2012 12:23:44" ).getTime

答案 1 :(得分:1)

别想太多了:new Date(start).toString

没什么错

答案 2 :(得分:1)

您可以使用java.time库,并以可读格式将其获取,如下面的一行所示。

scala>  java.time.LocalDateTime.ofEpochSecond(System.currentTimeMillis/1000,0,java.time.ZoneOffset.UTC)
res31: java.time.LocalDateTime = 2018-11-21T18:37:49

scala>

我只是将毫秒数潜水了1000,所以我们得到了EpochSecond。

要找回它,

scala> java.time.LocalDateTime.parse("2018-11-21T18:41:29").toEpochSecond(java.time.ZoneOffset.UTC)
res40: Long = 1542825689

scala>