将 BigInt 时间戳转换为 Java 中的日期?

Dhi*_*mal 1 java java.util.date

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

ass*_*ias 6

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

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

long millis = 1435555326831L;
Date d = new Date(millis);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 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())));
Run Code Online (Sandbox Code Playgroud)

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