【问题标题】:Converting Integer time stamp into java date [duplicate]将整数时间戳转换为java日期[重复]
【发布时间】:2012-05-15 16:52:29
【问题描述】:

我有以下整数形式的时间戳

1333125342

我可以使用 SQL 进行转换:

select DATEADD(ss, FlOOR(1333089223/86400)*86400, '1970-01-01 00:00:00') AS Date  

如何在java中转换它?这样它就会返回值:

3/30/12 12:18:43 PM

【问题讨论】:

  • 1333125342 代表什么?
  • @JigarJoshi 其时间戳的整数值
  • 似乎不太可能:date: invalid date 1333125342'`

标签: java datetime


【解决方案1】:

如果是毫秒值,则表示自January 1, 1970 00:00:00.000 GMT以来经过的毫秒数

然后简单地使用

new java.util.Date(millis);

如果您需要特定格式

3/30/12 12:18:43 PM

然后使用SimpleDateFormatDate 格式化为所需格式的String

【讨论】:

  • 如果不进行相应的处理以将其转换成这样的毫秒
  • 它返回 1970-01-16 15:48:09 但值为 3/30/12 12:18:43 PM
  • 你需要知道这个数字代表什么,然后看我上面的评论,你需要按照彼得的建议乘以1000L
【解决方案2】:

假设它是自 1970 年 1 月 1 日以来的时间,以秒为单位。你可以试试

String dateAsText = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                          .format(new Date(1333125342 * 1000L));

【讨论】:

  • L 表示 1000 是 long 没有这个,当你乘以 int * intint * long 时可能会溢出将导致long 不会溢出。
  • 1333125342 * 1000 是 1685480240(由于溢出) 1333125342 * 1000L 是 1333125342000L
  • 感谢1000L 的解释。有相同的官方链接吗?
  • @SumitRamteke 我会阅读 RollCycle 和 RollCycles 的源代码,因为大部分代码都是单行代码。
【解决方案3】:

该时间戳包含自 1970 年 1 月 1 日 0:00 UTC 以来经过的秒数。

要将其转换为 Java 日期,请实例化一个新的 Date 对象 (see Java doc) 并在其上调用 setTime()。请注意,setTime 需要毫秒而不是秒,因此您必须将时间戳乘以 1000。

toString() 方法产生可读的东西。

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 2014-06-26
    • 2019-02-16
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2014-04-11
    • 2018-09-12
    相关资源
    最近更新 更多