当前位置: 首页 > 知识库问答 >
问题:

ZonedDateTime到java.util.date->EST到UTC-关闭1小时

方权
2023-03-14

我正在尝试将ZonedDateTime(EST)转换为日期(UTC)我看到3月的13和14日历日期有1小时的Rest时间

SystemDefault-UTC

ZonedDateTime zonedDateTime1 = ZonedDateTime.of(2021, 3, 13, 19, 0, 0, 0, ZoneId.of("America/New_York")); 

Date date1 = Date.from(zonedDateTime1.withZoneSameInstant(ZoneId.systemDefault()).toInstant();

System.out.println("EST -> ", zonedDateTime1);
System.out.println("UTC -> ", date1);

ZonedDateTime zonedDateTime2 = ZonedDateTime.of(2021, 3, 14, 19, 0, 0, 0, ZoneId.of("America/New_York")); 

Date date2 = Date.from(zonedDateTime2.withZoneSameInstant(ZoneId.systemDefault()).toInstant();
 
System.out.println("EST -> ", zonedDateTime2);
System.out.println("UTC -> ", date2);

实际结果:
EST->2021-03-13T19:00-05:00[美国/纽约]
UTC->太阳3月14日00:00:00 UTC 2021
EST->2021-03-14T19:00-04:00[美国/纽约]
UTC->太阳3月14日23:00:00 UTC 2021

预期结果:
EST->2021-03-13T19:00-05:00[美国/纽约]
UTC->太阳3月14日00:00:00 UTC 2021
EST->2021-03-14T19:00-04:00[美国/纽约]
UTC->3月15日00:00:00 UTC 2021

下面是业务用例

->特定客户假日2021/1/14、2021/2/14、2021/3/14(均为协调世界时)

->用户选择特定时间,例如:2021/2/14 19:00,2021/3/14 19:00 EST(这两天是实际工作日)

现在系统已经说用户选择的日期是客户的假日或工作日

为此,我将用户选择的日期(EST)转换为UTC,并对照客户端特定的日历进行检查(它对二月份有效,但对三月份失败)

共有1个答案

金高飞
2023-03-14

3月14日太阳,美国/纽约夏令时开始。我想这就是观察到的差异的原因。

America/New_York的夏令时开始于2021-03-14T02:00:00 EST。也就是说,对于时区America/New_York,在此之后(直到冬季时间再次生效)的任何日期时间实例都将是EDT而不是EST。EDT的UTC偏移为-4小时。

 类似资料:
  • 我在一个应用程序API (DFC)下工作,它给了我一个类似日期的对象(IDfTime)。API自动将日期转换为当地时区(EST)。我需要转换为UTC发送到oracle数据库。出于某种原因,我的代码增加了一个月。我不明白。有人能解释一下这个吗? 是由应用 API 返回的类似日期的对象。我已将其转换为字符串,它看起来像预期的那样(对我来说是 EST)。因此,使用日历和简单日期格式将其转换为特定格式的字

  • 我需要转换一个日期列,数据库中的日期正好偏离了5个小时。时间保持为UTC,当他们查看应用程序时,它会显示EST时区。应用程序自动转换时间。UTC比东部标准时间提前了5秒。以下代码似乎为大多数时间戳固定了时间和日期,但是,有没有办法设置和偏移?报告回顾一天,并应将转换后的UTC时间返回到EST时间。

  • 我将我所有的时间存储在UTC和我的系统设置为UTC(虽然我在EST)。 我有日期存储为: 然而,我想选择基于今天的信息为EST,所以我试图: > 获取当前时间为UTC并更改为EST 接下来我想得到EST日的开始时间(2013-02-19 00:00:00.000000-05:00)和结束时间(2013-02-19 23:59:59.99999-05:00) 一旦我有了这些值,我想转换回UTC,所以

  • 我在中央时间有一个日期值 String cstDate="02-JAN-1903.34.33.540260000 AM"; 我必须将上述字符串值转换为UTC格式。我使用的是Java 1.8和ZoneDateTime。 请查找以下代码。 但出现异常:无法在索引3处分析文本“02-JAN-19 03.34.33.540260000 AM” 不明白为什么我会得到这个例外。 谢谢

  • 问题内容: 我使用了一个新的Date()对象来填充MySQL DB中的一个字段,但是存储在该字段中的实际值在我的本地时区中。 如何配置MySQL以将其存储在UTC / GMT时区? 我认为,配置连接字符串会有所帮助,但我不知道如何。连接字符串中有许多属性,例如useTimezone,serverTimzone,useGmtMillisForDatetimes,useLegacyDatetimeCo

  • 我有几个wsdl文件,差不多几百个。每当我为它们创建客户机jaxb客户机类时,jaxb就会自动将所有日期/时间字段映射到XMLGregorianCalender。经过大量的谷歌搜索,我发现提供一个单独的绑定文件是唯一的解决方案。 我将自定义设置保存在wsimport命令中给出的cust.txt中,DateAdapter类源文件也在同一个目录中。这个班没有包裹。下面是我的目录结构。