java - 如何用GWT获取浏览器的 "Real"时区

标签 java gwt smartgwt

我需要真实的时区 ID,但不需要像 Etc/GMT-xxx 这样的假/通用时区。 我知道有一些解决方案可以使用以下命令获取偏移量,甚至是“假”时区:

int offset = new Date().getTimezoneOffset(); String timezone = TimeZone.createTimeZone(offset).getID();

目前我们的项目正在使用它。然而,这只会给你汇总的偏移量,但你永远不会知道这个偏移量是否真的包含 DST(夏令时/夏令时)偏移量。或者换句话说:您知道总偏移量是 2 小时,但它不会判断它实际上是 2 + 0 还是 1 + 1,这在我的用例中确实很重要。

这是我们的用例:我们有一个允许用户上传 excel 文件的函数,该函数将解析 excel 文件并将记录插入系统。每个记录将有不同的日期时间。我们的功能必须检查以下内容:

  1. 如果浏览器时区(从用户上传文件的地方)受 DST_offset。
  2. 如果设置为夏令时,我们将进一步确定日期是否属于“夏季”。
  3. 然后我们的系统偏移日期时间并相应地存储到数据库中。
  4. 因此,在批处理 excel 文件中,其中的多条记录可能有 DST 偏移,而有些则没有。

据我所知,我们可以使用 java 日历来实现上述逻辑 1 和 2,来自此链接 https://www.baeldung.com/java-daylight-savings .但是,先决条件是:我们需要真实的时区 ID,例如“Europe/Rome”,但不是假的或一般的“Etc/GMT-xxx”。

请告知我们如何在 Smart GWT 中获得“真实”时区 ID?或者是否有任何替代方案来处理上述用例?

最佳答案

几天前我将 ZoneId.systemDefault() 添加到 https://github.com/adrianmsmith/gwt-time希望它能完全按照你的意愿行事。如果浏览器提供此信息(例如,IE 不提供),它会从浏览器返回区域,如“欧洲/罗马”。如果您有任何问题,请随时通过我的 github 帐户上的电子邮件地址与我联系。

关于java - 如何用GWT获取浏览器的 "Real"时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56954750/

相关文章:

events - SmartGWT RichTextEditor 未捕获任何 onBrowserEvents

Java 字节码调用接口(interface)指令

java - 克隆具有同一类的父级和子级的对象

java - 通过另一个文件中的 Controller 实例引用在 MainController 中设置文本字段

java - 使 JavaFX 应用程序非静态

带滚动条的 GWT 100% 高度面板

gwt - 在 SmartGWT 中设置 ListGrid 选择

java - 如何开发 GWT widget?

maven-2 - 如何让 Maven GWT 2.0 构建工作

java - 从 Javascript JSNI 调用 Java