将epoch中的秒数转换为Scala中的joda DateTime

ran*_*its 15 datetime scala jodatime

我试图从纪元开始占用几秒钟并将其转换为Scala中的DateTime对象.我用的是joda.不幸的是,无论是使用秒还是毫秒,我都会得到奇怪的结果.我在这做错了什么?

scala> new org.joda.time.DateTime(1378607203*1000)
res2: org.joda.time.DateTime = 1969-12-31T02:31:40.984Z

scala> new org.joda.time.DateTime(1378607203)
res3: org.joda.time.DateTime = 1970-01-16T22:56:47.203Z
Run Code Online (Sandbox Code Playgroud)

ped*_*rla 35

检查快速REPL会话:

scala> 1378607203 * 1000
res6: Int = -77299016
Run Code Online (Sandbox Code Playgroud)

奇怪,不是吗?你能猜出为什么会这样吗?

我会给你一个从DateTime你试图使用的构造函数中提取的提示.

DateTime(long instant)
Run Code Online (Sandbox Code Playgroud)

仍然没有得到它?让我们尝试稍微不同的版本:

scala> 1378607203L * 1000
res8: Long = 1378607203000
Run Code Online (Sandbox Code Playgroud)

注意L指示Long类型的文字.你要求1万亿!Int只能达到2亿!

scala> Int.MaxValue
res7: Int = 2147483647
Run Code Online (Sandbox Code Playgroud)

这样做DateTime(1378607203L*1000)会使它发挥作用.

  • 我会说首先研究api的日期和时间.其次问一个问题是如此.在他自己的问题中,没有别人的问题. (3认同)