【问题标题】:Convert BigInt timestamp to Date in java? [duplicate]在java中将BigInt时间戳转换为日期? [复制]
【发布时间】:2015-06-29 09:15:47
【问题描述】:

我在网上搜索了一些关于 BigInt 数据转换为日期的内容,同时我发现了很多相同的问题,但似乎没有一个问题有效。我的数据库中有 13 位数据 1435555326831,我认为这是 UNIXTIME,现在我想将其转换为 yyyy-MM-dd HH:mm:ss 形式。谢谢

【问题讨论】:

  • 哪个版本的 Java?答案取决于您使用的是 Java 8 还是其他较低版本
  • 没有new Date(BigInt.longValue());工作???
  • 仅供参考,经典的 Unix Time 是自 1970 年第一刻(UTC 时区)以来的 whole 秒计数,而忽略 Leap Seconds。你所拥有的显然是 毫秒。另外,请注意其他粒度。一些系统使用 微秒,尤其是 Postgres 等数据库。 Java 8 及更高版本中内置的新 java.time 包使用 纳秒

标签: java java.util.date


【解决方案1】:

您可以先将号码转换成long(如果收到BigInteger,可以拨打BigInteger.longValue())。

那么你有两个选择。使用标准java.util.Date,您可以使用:

long millis = 1435555326831L;
Date d = new Date(millis);

然后您可以使用 SimpleDateFormat 格式化日期以进行输出。

如果您可以使用 Java 8 的新 Time API,您可以创建一个即时并将其转换为所需的时区(在我下面的示例中是您的计算机时区):

Instant instant = Instant.ofEpochMilli(millis);
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(fmt.format(instant.atZone(ZoneId.systemDefault())));

请注意,这些转换仅在 BigInteger 小于最大 long 大小时才有效,一般情况下无效。这应该不是问题,因为the maximum value of a long is 2^63 - 1,但如果您的BigInteger 是用户输入,您需要检查这一点。

【讨论】:

    【解决方案2】:

    您的数据在 Unix 时间戳上,您可以使用 new java.util.Date() 简单地转换它 这是它的例子 Java: Date from unix timestamp

    【讨论】:

      猜你喜欢
      • 2014-03-09
      • 1970-01-01
      • 2011-04-08
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      • 2014-05-16
      相关资源
      最近更新 更多