基于DST转换存储在数据库中的时间

我有时间存储在数据库中。

ID  TYPE        STARTTIME    ENDTIME

1   WEEKDAY     08:00:00    18:00:00
2   SATURDAY    10:00:00    16:00:00
3   SUNDAY      10:00:00    16:00:00
4   HOLIDAY     10:00:00    16:00:00

Java代码:

ZonedDateTime.of(date,entity.getStartTime(),ZoneId.systemDefault());

当夏令时结束时,这将检索开始时间为09:00:00,结束时间为19:00:00。

根据夏令时检索这些时间的最佳方法是什么?

示例

一个工作日,无论DST如何,我都需要将开始时间设为08:00:00,将结束时间设为18:00:00。

xiaotong11 回答:基于DST转换存储在数据库中的时间

我知道这样做可能很奇怪,但是您可以将其转换为UTC,然后使用withZoneSameLocal将同一时刻转换为另一个区域

  

此方法更改时区并保留本地日期时间。本地日期时间仅在对于新区域无效时才更改,该时间使用与ofLocal相同的方法(LocalDateTime,ZoneId,ZoneOffset)确定。

ZonedDateTime dateTime = ZonedDateTime.of(LocalDate.now(),LocalTime.now(),ZoneId.of("UTC"));

System.out.println(dateTime);  //2019-11-19T10:48:12.324356Z[UTC]

ZonedDateTime result = dateTime.withZoneSameLocal(ZoneId.of("America/Chicago"));  // provide ZoneId.systemDefault()

System.out.println(result);    //2019-11-19T10:48:12.324356-06:00[America/Chicago]
本文链接:https://www.f2er.com/3071741.html

大家都在问