【问题标题】:Convert seconds since epoch to joda DateTime in Scala在Scala中将自纪元以来的秒数转换为joda DateTime
【发布时间】:2013-09-11 21:20:38
【问题描述】:

我试图从纪元开始花费几秒钟并将其转换为 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

【问题讨论】:

    标签: scala datetime jodatime


    【解决方案1】:

    检查快速 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) 会成功。

    【讨论】:

    • 如何将 joda dateTime (1970-01-16T22:56:47.203Z) 转换为 Unix 时间?
    • 我会说首先研究日期和时间 API。其次问一个问题就是这样。在自己的问题中,在别人的问题中没有。
    猜你喜欢
    • 2014-09-02
    • 2011-04-11
    • 2010-09-13
    • 2012-06-06
    • 2013-08-19
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多