相关疑难解决方法(0)

如何在Java 8(Scala)中将日期时间字符串转换为long(UNIX纪元时间)

我想要一些字符串的UNIX纪元时间(Posix Time,Unix Time)pattern,字符串是正常格式(所以UTC).请使用Java 8,而不是Joda或旧Java.

到目前为止,我有以下内容,但我讨厌这个原因有很多:

  1. 对于与日期最常见的事情(转换为UNIX纪元时间)来说,这太冗长了.7方法调用应该是1.
  2. 它必须指定UTC,但是UTC只是默认值,为什么我必须在这里明确?
  3. 它有一个字符串文字 "UTC"
  4. 它有一个神奇的数字 ZoneOffset.ofHours(0)

我到目前为止最好的:

def dateTimeStringToEpoch(s: String, pattern: String): Long = 
    LocalDateTime.parse(s, DateTimeFormatter.ofPattern(pattern))
      .atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours(0)))
      .toInstant().getEpochSeconds
Run Code Online (Sandbox Code Playgroud)

另外,奖金问题,是否有效?创建过DateTimeFormatter孔是否有任何开销DateTimeFormatter.ofPattern(pattern)?如果是这样的话?

java datetime scala epoch java-8

6
推荐指数
1
解决办法
489
查看次数

标签 统计

datetime ×1

epoch ×1

java ×1

java-8 ×1

scala ×1