首页 > 解决方案 > Java 8:使用 Instant,如何检索 ZoneId 信息

问题描述

我在我的用例中使用 Java Instant,我想在时间轴中捕获确切的时刻,例如{用户上次访问我的网站的时间}。这是数据持久保存在后端 (sql) 中的时间。当我使用 Instant.now(); 时,它以 UTC 格式持续存在;

由于我的网站在所有区域(世界上)都使用,当用户登陆主页时,我想根据他的 zoneId 将 dateTime (他上次访问网站的时间)显示为 localDateTime。

如何获取 ZoneId 信息?

由于我的网站目前托管在 2 台服务器中,并且两台服务器都在印度,如果我这样做ZoneId.systemDefault(),我总是会得到印度 ZoneId(亚洲/加尔各答)。所以,转换是不可能的。

如果来自美国的某人击中了我的服务器,我如何在我的服务器中获取 zoneId 作为美国?

标签: javaweb-servicesjava-8serverjava.time.instant

解决方案


最好的办法是保持简单。

只需使用 UTC 来存储访问时间。前端可以将 UTC 转换为浏览器(因此是用户)的时区。


推荐阅读