对于其中一个项目,我从另一个系统得到了一毫秒的时间。我需要转换成"yyyy-DDDT:HH:mm:ssZ“
诀窍是在闰秒中显示它。
由于Java库没有闰秒,所以我决定使用Time4J的Time4J类。
但Moment的toString()正在印刷yyyy-MM-ddTHH:mm:ss。
是否有可能在瞬间课上得到日的?
是否有创建自定义格式化程序的示例。我试了几次,包括ChronoFormatter。但没有达到预期的效果。
一个棘手的解决方法是将Calendar用于Date部件,Moment用于time部件。
但是,这很繁琐,从字符串解析回来时也会很困难。
发布于 2017-05-26 18:47:35
对于类Moment来说,用元素周年日来格式化或解析矩/实例并不是什么特别的问题,只需选择一个适宜模式即可完成,请参阅下面的说明:
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但是,请记住,任何转换 of Moment-objects to 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的上下文中工作。在以编程方式处理类Time4J以及格式化和解析时,闰秒支持在所有级别的Moment中都有很深的嵌入。
https://stackoverflow.com/questions/44205662
复制相似问题