首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化time4j矩

格式化time4j矩
EN

Stack Overflow用户
提问于 2017-05-26 15:54:30
回答 1查看 336关注 0票数 3

对于其中一个项目,我从另一个系统得到了一毫秒的时间。我需要转换成"yyyy-DDDT:HH:mm:ssZ

诀窍是在闰秒中显示它。

由于Java库没有闰秒,所以我决定使用Time4JTime4J类。

MomenttoString()正在印刷yyyy-MM-ddTHH:mm:ss

是否有可能在瞬间课上得到日的

是否有创建自定义格式化程序的示例。我试了几次,包括ChronoFormatter。但没有达到预期的效果。

一个棘手的解决方法是将Calendar用于Date部件,Moment用于time部件。

但是,这很繁琐,从字符串解析回来时也会很困难。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-26 18:47:35

对于类Moment来说,用元素周年日来格式化或解析矩/实例并不是什么特别的问题,只需选择一个适宜模式即可完成,请参阅下面的说明:

代码语言:javascript
复制
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.Instantjava.util.Date都会丢失闰秒信息。

另一点:无法直接访问类Moment中的年月日元素,因为年份日期是一个本地元素,与没有区域偏移的通用时间无关,但如果还指定区域偏移或时区,则可以编程完成。示例:

代码语言:javascript
复制
System.out.println(ls.get(PlainDate.DAY_OF_YEAR.at(ZonalOffset.UTC))); // 366

同样的程序也适用于时间元素:

代码语言:javascript
复制
System.out.println(ls.get(PlainTime.SECOND_OF_MINUTE.at(ZonalOffset.UTC))); // 60

关于最后一个例子:当然,它将只在Moment的上下文中工作,而不是在本地类型PlainTime的上下文中工作。在以编程方式处理类Time4J以及格式化和解析时,闰秒支持在所有级别的Moment中都有很深的嵌入。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44205662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档