【发布时间】:2019-08-11 08:28:28
【问题描述】:
尝试使用 java 将时间戳转换为任何区域的时间,这里我可以使用 ZoneID 进行转换,但它会返回字符串数据类型。在这里我期待像 getTimeMillis() 的输出
Instant now = Instant.ofEpochMilli(lngDate);
ZoneId zoneId = ZoneId.of("America/Chicago");
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(now, zoneId);
DateTimeFormatter isoDateFormatter = DateTimeFormatter.ISO_DATE_TIME;
String zdt = zonedDateTime.format(isoDateFormatter);
这里我只期望时间毫秒(8 位数字),下面给你我的代码,请你帮忙解决它。
输入:1552979609000L
DateTimeFormatter isoDateFormatter = DateTimeFormatter.ISO_TIME;
String zdt = zonedDateTime.format(isoDateFormatter); // output in string : 00:13:29-07:00
LocalTime time = LocalTime.parse(zdt, isoDateFormatter); // output in local time : 00:13:29
【问题讨论】:
-
您到底想转换什么? “时间戳”可能意味着很多东西。您是否正在尝试转换 Instant?分区日期时间? java.sql.Timestamp?一个字符串?日期时间的毫秒表示很长,那么您希望如何将其放入 int 中?
-
另外,一般来说,一个不代表除 UTC 之外的任何其他时区的数字时间戳。有一些例外,但通常如果我看到基于 Unix 纪元的时间戳,则该纪元是 UTC,因此该时间戳是 UTC。对于我可能给它的任何人来说,放入其他时区都会有问题,因为他们会将其视为 UTC。换句话说,您将完全选择一个不同的时间点。
标签: java java-8 timestamp timezone java-time