通过忽略夏令时将 LocalDate 转换为 Epoch
LocalDate to Epoch by Ignoring DayLightSaving
商业案例:
数据类型 LocalDate
的日期字段需要转换为 epoch
。
private LocalDate someDate;
我遇到的问题是,有时夏令时 日期被转换为 n-1。
示例: 日期是 28-Feb-2037
转换为 => 27-Feb-2037
这是不正确的。
解释:当我们从 LocalDate 转换为 Epoch 并将 ZoneId 作为系统默认值时,它会考虑夏令时。由于这个原因,纪元减少了 1 小时,当 UI 再次将其转换为日期时,它变为 n-1 date 23:00:00 hrs
.
我的转换代码如下所示
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 needs to be converted into epoch
调用 toEpochDay()
获取自 1970 年 1 月 1 日以来 天 的纪元。
如果需要纪元秒(又名Unix time),则乘以86400
。
乘以86400000
如果你需要纪元毫秒(常见于Java)。
商业案例:
数据类型 LocalDate
的日期字段需要转换为 epoch
。
private LocalDate someDate;
我遇到的问题是,有时夏令时 日期被转换为 n-1。
示例: 日期是 28-Feb-2037
转换为 => 27-Feb-2037
这是不正确的。
解释:当我们从 LocalDate 转换为 Epoch 并将 ZoneId 作为系统默认值时,它会考虑夏令时。由于这个原因,纪元减少了 1 小时,当 UI 再次将其转换为日期时,它变为 n-1 date 23:00:00 hrs
.
我的转换代码如下所示
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 needs to be converted into epoch
调用 toEpochDay()
获取自 1970 年 1 月 1 日以来 天 的纪元。
如果需要纪元秒(又名Unix time),则乘以86400
。
乘以86400000
如果你需要纪元毫秒(常见于Java)。