格式化或解析时刻/同一天的一年元素的时刻是与类Moment
没有特别的问题,可以通过选择suitable pattern刚刚做了,看到这个演示了闰秒:
Moment ls = PlainTimestamp.of(2016, 12, 31, 23, 59, 59).atUTC().plus(1, SI.SECONDS);
System.out.println(ls); // 2016-12-31T23:59:60Z
ChronoFormatter<Moment> f =
ChronoFormatter.ofMomentPattern(
"uuuu-DDD'T'HH:mm:ssX", PatternType.CLDR, Locale.ROOT, ZonalOffset.UTC);
String text = f.format(ls);
System.out.println(text); // 2016-366T23:59:60Z
Moment parsed = f.parse(text);
System.out.println(parsed.isSimultaneous(ls)); // true
请记住,任何conversion的Moment
-对象例如java.time.Instant
或java.util.Date
将松散闰秒信息但是。
另一点:访问类Moment
中的一年级元素不是直接可能的,因为一年中的某个本地元素与不具有区域偏移的通用时间无关,但可以通过编程方式完成如果你还指定了区域偏移或时区。例如:
System.out.println(ls.get(PlainDate.DAY_OF_YEAR.at(ZonalOffset.UTC))); // 366
同样的方法也可以应用于时间元素:
System.out.println(ls.get(PlainTime.SECOND_OF_MINUTE.at(ZonalOffset.UTC))); // 60
关于最后一个例子:它只会在Moment
环境中工作,但不在本地型PlainTime
的情况下,当然。在处理类Moment
时,闰秒支持深深植入了Time4J的各个级别,以编程方式以及格式化和解析。
非常感谢你! – william