【问题标题】:Java 8 : Using Instant, How to retrieve ZoneId informationJava 8:使用 Instant,如何检索 ZoneId 信息
【发布时间】:2019-07-26 06:01:54
【问题描述】:

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

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

如何获取 ZoneId 信息?

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

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

【问题讨论】:

  • 您可以手动提供ZoneId,但是您需要确定它是否与访问您的服务的IP地址相对应。
  • 您可以使用 IP 地址来猜测区域,或者在前端使用一段 Javascript 将您的 UTC 时间戳转换为浏览器的本地区域,或者将该区域发送到您的服务器以使用会议。

标签: java web-services java-8 server java.time.instant


【解决方案1】:

最好的办法是保持简单。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多