给定一个时区,例如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));