无法获取本地和utc即时

瓦列里(Valeriy K.):

我需要获取本地时间和utc时间(以秒为单位)。我阅读了StackOverflow中的一些帖子,并找到了一些解决方案,该解决方案如上所述是正确的:

    Instant time = Instant.now();
    OffsetDateTime utc = time.atOffset(ZoneOffset.UTC);
    int utcTime = (int) utc.toEpochSecond();
    int localTime = (int) time.getEpochSecond();
    System.out.println("utc " + utcTime + " local " + localTime);

但是结果不是我所期望的。现在是世界标准时间。输出:

utc   1593762925
local 1593762925

调试后,我发现Instant.now()已经是utc。我找不到如何获取当前时区(即我的系统时区)的时间。

我在API中找到了一些解决方案,但出现了错误:

OffsetDateTime utc = time.atOffset(ZoneOffset.of(ZoneOffset.systemDefault().getId()));

线程“主”中的异常java.time.DateTimeException:ZoneOffset的ID无效,格式无效:java.base / java.time.ZoneOffset.of(ZoneOffset.java:241)上的Europe / Astrakhan

UPD:我的问题是如何以秒为单位获取本地时区和UTC的当前时间?即自1970-01-01T00:00:00 GMT + 4和1970-01-01T00:00:00 GMT + 0以来的秒数

UPD2:我有一些设备需要从1970年以秒为单位的utc时间和以秒为单位的发件人本地时间进行响应。为什么?我不知道。对我来说这是黑匣子。

德哈尔:

我认为您需要采用Instant通过应用来创建ZonedDateTimeOffsetDateTime也可能合适)ZoneId.of("UTC"),然后采用ZonedDateTime并使用它来改变语言环境:

public static void main(String[] args) {
    Instant now = Instant.now();
    
    ZonedDateTime utcZdt = now.atZone(ZoneId.of("UTC"));
    ZonedDateTime localZdt = utcZdt.withZoneSameLocal(ZoneId.systemDefault());
    
    System.out.println(utcZdt.toEpochSecond() + " <== " + utcZdt);
    System.out.println(localZdt.toEpochSecond() + " <== " + localZdt);
}

在我的系统上,此输出

1593765852 <== 2020-07-03T08:44:12.070Z[UTC]
1593758652 <== 2020-07-03T08:44:12.070+02:00[Europe/Berlin]

两小时的差异正在影响时期秒的第六位数字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从NSDate对象获取UTC时间和本地时间

如何在特定时区(“欧洲/巴黎”)中获取今天开始日期和结束日期的UTC即时消息

获取本地日期而不是 UTC

即时时间解析错误(无法从TemporalAccessor获取即时信息)

如何获取当前时间和日期 C++ UTC 时间不是本地的

OpenUri和OpenSSL无法获取本地颁发者证书

SourceTree和Stash:无法获取本地发行者证书

无法获取本地文件

从UTC按本地时区获取数据过滤

Ruby中的UTC和本地时区

日历与UTC和本地日期的混淆

尝试从我即时求和的列中获取累计和

Git获取和本地分支

如何获取当前本地时间的UTC转换的Java时间戳?

从 UTC ISO 午夜日期中删除尾随 'z' 以获取本地

在angularjs中获取全局(UTC或GMT)时间,而不是本地时间

在utc c#中获取对应的起始本地小时

无法从本地 PC 和 AWS EC2 实例的 Twitter Web 获取相同的请求结果

PHP Curl,但HTML已加密和SSL证书:无法获取本地颁发者证书

如何在本地存储,IMAP和即时推送新电子邮件中使用Mutt?

获取即时 shopify webhook

pytz-将UTC和时区转换为本地时间

可以同时显示UTC和本地时间的Windows时钟吗?

正确使用UTC时间戳和本地日期时间

日期和时间(本地时间而不是UTC)(最大值)

本地时间和UTC混淆C#,SQL Server

无法即时更新外观

确切的UTC时间和转换为UTC时间的本地时间是不同的python

curl无法在Ubuntu上获取本地证书