EDT还是EST?根据日光节省动态设置3个字母时区



给定一个时区,例如java中的'edt',是否有一种方法可以在Java中设置任意DateTime在该时区中并使用正确的标签打印(EDT或EST(?

一些上下文:

我正在开发一个每周的报告生成功能,需要在首次配置报告的用户的时区中时间戳报告。我想使用3个字母时区标签(例如'est'或'CST'(标记报告,以便用户会看到一条诸如"此报告的消息是在EDT上生成的"。(我知道这些可能是模棱两可的。(

报告是在服务器上以PDF的形式生成的,因此所有信息都必须来自保存在数据库中的报告配置。

现在,当客户端发布新的报告配置时,它在配置中包含三个字母时区以及其偏移量(例如,EDT的GMT-0400'(,并使用它来创建具有保存偏移量的LocalDateTime然后用保存的标签打印。显然,这不会解释日光节省,所以我需要一个更好的解决方案。

用于参考,我正在使用客户端上的angularj。

事实证明,我的问题需要一个客户端解决方案,基于评论和这个问题,我使用了Moment.js moment.tz.guess();来获取一个IANA TIMEZONE,在配置新报告时包含在内。

服务器知道IANA时区创建划分DateTime很简单:

String timezone = "America/New_York";
ZonedDateTime timestamp = ZonedDateTime.now().withZoneSameInstant(ZoneId.of(timezone));

相关内容

  • 没有找到相关文章

最新更新