我面临的问题是我需要将时间从 24 格式转换为 AM/PM 格式(反之亦然),通过 time4j 库删除多余的值,例如纳秒和秒。
我正在使用 time4j 库,因为 Java 无法处理 Windows 时区,我必须通过 time4j 转换它们
从 24 小时格式转换为上午/下午将取决于用户本地化。我想将它(本地化)作为参数传输。本地化看起来像“en-US”字符串。
例如:如果用户本地化是“en-US”,则将 24 小时格式转换为 AM/PM。否则保持当前值。
或者,当我已经定义了用户的本地化时,以我需要的格式获得时间可能会更好?
任何想法如何做到这一点?请帮忙)
我必须花很多时间阅读time4j 文档,但我的想法很震惊
全面了解我正在做的事情以及所有这些的目的:
我必须从我的数据库中获取与 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 时区名称
我的下一步是从我已经转换为 IANA 时区的用户时区获取时间/或时间戳。
我确实喜欢这样:
PlainTime currentTime = SystemClock.inZonalView(winZone).now().toTime();
//currentTime: "T17:31:37,057"
其中“winZone”转换时区(例如“WINDOWS~Europe/Kiev”)
所以现在回到我在帖子顶部描述的问题。
当我已经定义了我的用户的本地化时,也许以我需要的格式获得时间会更好?
如何将时间从 24 格式转换为 AM/PM,反之亦然?
如何去除纳秒、秒等冗余值?
如何在转换中使用用户本地化?