gpt4 book ai didi

java - 如何自定义格式化 FileTime

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:16 32 4
gpt4 key购买 nike

给定一个 FileTime fileTime,如何以自定义方式将其格式化为字符串?

String s = fileTime.toString() 仅以 ISO 格式提供。

String s = DateTimeFormatter.ofPattern("uuuu-MMM-dd HH:mm:ss")
.format(fileTime.toInstant());

抛出 UnsupportedTemporalTypeException: Unsupported field: Year

最佳答案

我个人认为错误消息“Unsupported field: Year”具有误导性。 真正的原因是缺少时区。需要此信息来帮助格式化程序在内部将给定时刻转换为人类时间表示。 解决方案:提供时区。然后支持格式化或解析 Instant - 与@flo 的答案相反。

打印:

String s = 
DateTimeFormatter.ofPattern("uuuu-MMM-dd HH:mm:ss", Locale.ENGLISH)
.withZone(ZoneId.systemDefault())
.format(Instant.now());
System.out.println(s); // 2015-Oct-30 15:22:32

解析:

相反的过程——解析——不幸的是不能以同样的直接方式工作,因为 java.time 的格式化引擎被设计成格式化程序只返回一个原始的 TemporalAccessor需要转换为真正需要的类型。示例:

Instant instant =
Instant.from(
DateTimeFormatter.ofPattern("uuuu-MMM-dd HH:mm:ss", Locale.ENGLISH)
.withZone(ZoneId.systemDefault())
.parse("2015-Oct-30 15:22:32"));
System.out.println("=>" + instant); // 2015-10-30T14:22:32Z

如果要解析的输入包含时区偏移量或标识符,那么您可以修改模式(符号 x、X、z、Z、VV 等)并省略对 withZone(... ),如果是偏移量 - 你真的应该省略那个调用,否则格式化程序不会使用你输入的时区偏移量,而是使用提供的一个时区(我在自己的测试中观察到的一个陷阱)。

关于java - 如何自定义格式化 FileTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33427126/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com