我想知道DST(夏令时,夏令时)开始和结束的一天中的小时数。
我愿意使用java.time
。区域ID为Europe/London
。主要目的是:
我有一个纪元值,应该从中找出小时数。怎么可能?
答案 0 :(得分:1)
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是25小时
到标准时间的转换将发生在10月的最后一个星期日,即今年10月28日。
Australia / Lord_Howe时区使用30分钟的DST转换,因此在该时区中,日期将是23.5小时或24.5小时,在上面的时间中将被截断为23和24。但是对于伦敦,您应该好的,直到那些疯狂的英国政客决定做类似的事情。 :-)