Java 通过忽略DaylightSave将LocalDate转换为历元

Java 通过忽略DaylightSave将LocalDate转换为历元,java,java-8,epoch,localdate,jsonserializer,Java,Java 8,Epoch,Localdate,Jsonserializer,商业案例: 需要将数据类型为LocalDate的日期转换为历元 我遇到的问题是,在日光节约的情况下,有时日期转换为n-1 示例:日期为2037年2月28日被转换为=>2037年2月27日,这是不正确的 说明:当我们从LocalDate转换为Epoch并将ZoneId作为系统默认值时,它会考虑夏令时。由于这个原因,历元减少了1小时,当UI再次将其转换为日期时,它变为n-1日期23:00:00小时 我的转换代码如下所示 someDate.atStartOfDay(ZoneId.systemDefau

商业案例:

需要将数据类型为LocalDate的日期转换为历元

我遇到的问题是,在日光节约的情况下,有时日期转换为n-1

示例:日期为2037年2月28日被转换为=>2037年2月27日,这是不正确的

说明:当我们从LocalDate转换为Epoch并将ZoneId作为系统默认值时,它会考虑夏令时。由于这个原因,历元减少了1小时,当UI再次将其转换为日期时,它变为n-1日期23:00:00小时

我的转换代码如下所示

someDate.atStartOfDay(ZoneId.systemDefault()).toEpochSecond() * 1000); //systemDefault = EUROPE/PARIS

如何在转换时忽略夏令时?

通过忽略下面的时区代码将为您完成这项工作

localDate.atStartOfDay().atOffset(UTC).toEpochSecond()
或者你需要这个:

    TimeZone timeZone = TimeZone.getTimeZone("GMT+1");// Paris timezone without daylight saving
    localDate.atStartOfDay(timeZone.toZoneId()).toEpochSecond();

我们的想法是使用一个固定的区域偏移量来摆脱夏令时。

忽略下面的时区代码将为您完成这项工作

localDate.atStartOfDay().atOffset(UTC).toEpochSecond()
或者你需要这个:

    TimeZone timeZone = TimeZone.getTimeZone("GMT+1");// Paris timezone without daylight saving
    localDate.atStartOfDay(timeZone.toZoneId()).toEpochSecond();
其想法是使用固定区域偏移来消除夏令时

LocalDate需要转换为历元

从1970年1月1日起致电获取大纪元日

如果需要,乘以86400

如果您需要Java中常见的时间,请乘以86400000

LocalDate需要转换为历元

从1970年1月1日起致电获取大纪元日

如果需要,乘以86400


如果您需要Java中常见的历元毫秒数,请乘以86400000。

使用localDate.toEpochSecondLocalTime.MIN、ZoneOffset.UTC Java 9+时,我的默认时区是Europe/Paris。将其更改为UTC可以吗?@KunalVohra这只是一个日期,没有时区。“时区只在涉及到一天中的某个时间时才适用。”@Andreas,我所提出的代码就是这样写的。又是约会而没有时间?你能给我解释一下你的答案吗?@KunalVohra不,不是。因此,您希望保留系统区域id,但忽略夏令时。我将修改答案。使用localDate.toEpochSecondLocalTime.MIN、ZoneOffset.UTC Java 9+生成的垃圾更短、更少。我的默认时区是欧洲/巴黎。将其更改为UTC可以吗?@KunalVohra这只是一个日期,没有时区。“时区只在涉及到一天中的某个时间时才适用。”@Andreas,我所提出的代码就是这样写的。又是约会而没有时间?你能给我解释一下你的答案吗?@KunalVohra不,不是。因此,您希望保留系统区域id,但忽略夏令时。我将修改答案。是否保留系统区域id但忽略夏令时?@EugenCovaci是。我怀疑您正在寻求错误的问题解决方案。当使用offset+01:00而不是时区Europe/Paris时,如果客户端时区位于offset+01:00,则问题将在offset+00:00,-01:00的客户端持续存在,等等。我也很困惑,因为我认为还没有人知道2037年冬天欧洲/巴黎的偏移量是+01:00还是+02:00。我的Java 11思考+01:00。我在法国搜索关于时间未来的信息。这是关于欧盟的:。法国人似乎赞成永久标准时间,即+01:00:您想保留系统区域id而忽略夏令时吗?@EugenCovaci是的。我怀疑您寻求的问题解决方案是错误的。当使用offset+01:00而不是时区Europe/Paris时,如果客户端时区位于offset+01:00,则问题将在offset+00:00,-01:00的客户端持续存在,等等。我也很困惑,因为我认为还没有人知道2037年冬天欧洲/巴黎的偏移量是+01:00还是+02:00。我的Java 11思考+01:00。我在法国搜索关于时间未来的信息。这是关于欧盟的:。法国人似乎赞成永久标准时间,即+01:00: