使用 java.time 确定一天中的小时数
Determine number of hours in a day using java.time
我想知道一天中 DST(夏令时,夏令时)开始和结束的小时数。
我愿意使用 java.time
。区域 ID 为 Europe/London
。主要意图是:
- 夏令时在 spring 开始时,我们一天有 23 个小时,因为时钟拨快了
- 反之,当夏令时结束时,我们一天有 25 个小时。
我有一个纪元值,我应该从中找到小时数。怎么可能?
ZoneId zone = ZoneId.of("Europe/London");
long epochMillis = 1_540_700_000_000L;
LocalDate date = Instant.ofEpochMilli(epochMillis)
.atZone(zone)
.toLocalDate();
int hoursInDay = (int) ChronoUnit.HOURS.between(
date.atStartOfDay(zone),
date.plusDays(1).atStartOfDay(zone));
System.out.println(date + " is " + hoursInDay + " hours");
我没有随机选择自纪元以来的毫秒数。在这种情况下,输出为:
2018-10-28 is 25 hours
将在 10 月的最后一个星期日,今年的 10 月 28 日过渡到标准时间。
Australia/Lord_Howe 时区使用 30 分钟 DST 转换,因此在该时区中,一天将是 23.5 小时或 24.5 小时,在上面将被截断为 23 和 24。但是对于在那些疯狂的英国政客决定做类似的事情之前,伦敦你应该没事。 :-)