从Java 8开始我可以使用instant和LocalDateTime
要获取Unix时间戳:
long unixTimestamp = Instant.now().getEpochSecond();
Run Code Online (Sandbox Code Playgroud)
但是,如果我想从过去得到一个时间,让我说2周我用这个:
int unixtime2weeksAgo = (int) ((System.currentTimeMillis() - 24 * 60 * 60 * 1000 * 14) / 1000L)
Run Code Online (Sandbox Code Playgroud)
有了这些文档,我无法构建基于新的Java 8功能的解决方案,有人可以通过使用Instant或LocalDateTime提供一个好的解决方案吗?
"两周前"取决于您的时区(可能有一些DST更改等).因此,使用Instant或LocalDateTime可能会产生问题,因为它们不包含任何时区信息.
假设你想用UTC做,你可以使用:
ZonedDateTime twoWeeksAgo = ZonedDateTime.now(ZoneOffset.UTC).minusWeeks(2);
long unixTs = twoWeeksAgo.toEpochSecond();
Run Code Online (Sandbox Code Playgroud)
您可以指定一个不同的时区代替ZoneOffset.UTC上面看到的.例如,ZoneId.of( "Asia/Kolkata" ).
| 归档时间: |
|
| 查看次数: |
3313 次 |
| 最近记录: |