java - Java 8:使用 Instant,如何检索 ZoneId 信息
问题描述
我在我的用例中使用 Java Instant,我想在时间轴中捕获确切的时刻,例如{用户上次访问我的网站的时间}。这是数据持久保存在后端 (sql) 中的时间。当我使用 Instant.now(); 时,它以 UTC 格式持续存在;
由于我的网站在所有区域(世界上)都使用,当用户登陆主页时,我想根据他的 zoneId 将 dateTime (他上次访问网站的时间)显示为 localDateTime。
如何获取 ZoneId 信息?
由于我的网站目前托管在 2 台服务器中,并且两台服务器都在印度,如果我这样做ZoneId.systemDefault()
,我总是会得到印度 ZoneId(亚洲/加尔各答)。所以,转换是不可能的。
如果来自美国的某人击中了我的服务器,我如何在我的服务器中获取 zoneId 作为美国?
解决方案
最好的办法是保持简单。
只需使用 UTC 来存储访问时间。前端可以将 UTC 转换为浏览器(因此是用户)的时区。
推荐阅读
- java - 是否可以为 ModelMapper 使用一个 propertyMap(在 spring boot 中)在两个方向上映射(DTO 到实体和实体到 DTO)?
- ruby-on-rails - 如何生成具有特定模式的 id
- flutter - 没有为类定义 getter 'Timer'
- c# - 如何使用 C# 和 SQL 在 asp.net 的中继器控制中显示列的总计
- python - OpenCV tesserocr 水印检测
- javascript - 如何更改日期选择器的宽度?
- python - Selenium 的 webdriver 在使用并行 webdriver 会话的 quit() 后未清除内存
- laravel - 类型错误:函数 Illuminate\Database\Eloquent\Builder::update() 的参数太少,0 已通过
- r - 在R中导入excel文件时如何防止将数字转换为科学形式?
- msbuild - NuGet MSBuild自动检测在TeamExplorer下找到MSBuild?