19

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

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
4

1 回答 1

41

检查快速 REPL 会话:

scala> 1378607203 * 1000
res6: Int = -77299016

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

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

DateTime(long instant)

还是不明白?让我们尝试一个稍微不同的版本:

scala> 1378607203L * 1000
res8: Long = 1378607203000

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

scala> Int.MaxValue
res7: Int = 2147483647

所以这样做DateTime(1378607203L*1000)会让它发挥作用。

于 2013-09-08T04:35:46.850 回答