【发布时间】:2018-06-15 12:17:43
【问题描述】:
我面临的问题是我需要将时间从 24 格式转换为 AM/PM 格式(反之亦然),通过 time4j 库删除多余的值,例如纳秒和秒。
我正在使用 time4j 库,因为 Java 无法处理 Windows 时区,我必须通过 time4j 转换它们
从 24 小时格式转换为上午/下午将取决于用户本地化。我想将它(本地化)作为参数传输。本地化看起来像“en-US”字符串。
例如:如果用户本地化是“en-US”,则将 24 小时格式转换为 AM/PM。否则保持当前值。
或者,当我已经定义了我的用户的本地化时,以我需要的格式获得时间可能会更好?
任何想法如何做到这一点?请帮助)
我必须花很多时间阅读time4j doc,但我的想法很糟糕
全面了解我正在做的事情以及所有这些的目的:
我必须从我的数据库中获取与 Windows 时区相对应的用户 timeZone 并将它们转换为 IANA 时区。我已经用这种方法做到了
WindowsZone wzn = WindowsZone.of(userTimeZoneId); //userTimeZoneId="eg. FLE Standart Time"
TZID winZone = wzn.resolveSmart(new Locale("","001"));
System.out.println(winZone.canonical()); // WINDOWS~Europe/Kiev
其中“userTimeZoneId”是数据库中的时区。对应Microsoft Name of Time Zones
我的下一步是从我已经转换为 IANA 时区的用户时区获取时间/或时间戳。
我是这样做的:
PlainTime currentTime = SystemClock.inZonalView(winZone).now().toTime();
//currentTime: "T17:31:37,057"
“winZone”转换时区的位置(例如“WINDOWS~Europe/Kiev”)
现在回到我在帖子顶部描述的问题。
当我已经定义了我的用户的本地化时,也许以我需要的格式获得时间会更好?
如何将时间从 24 格式转换为 AM/PM 或反之亦然?
如何去除纳秒、秒等冗余值?
如何在转换中使用用户本地化?
【问题讨论】:
-
为什么不使用 Java 的 LocalDateTime?
-
因为 Java 的 LocalDateTime 无法处理 Windows 时区。这就是为什么我必须使用 time4j 库。如果有可能使用 Java LocalDateTime 解决我的问题 - 我将非常感激
标签: java time java-time time4j