gpt4 book ai didi

android - SimpleDateFormat AM/PM 转换

转载 作者:行者123 更新时间:2023-11-29 16:31:17 24 4
gpt4 key购买 nike

因此,我正在尝试将 AM/PM 添加到 12:10:00。下面是我正在使用的代码

SimpleDateFormat timeToString = new SimpleDateFormat("hh:mm a");

我理解 hh 表示 12 小时,HH 表示 24 小时。

但是当我把上面提到的值放在

String dateStr = timeToString.format(time);

它给我 12:10 am

00:10:00 不应该是 12:00 am 吗?

编辑:

不应该将 12:10 转换为 12:10 PM 吗?

如果是,那我该怎么做。如果不是,那么解决方法是什么?

最佳答案

java.time 和 ThreeTen 反向移植

    DateTimeFormatter timeFormatter
= DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH);

String time24Hour = "12:10:00";
LocalTime time = LocalTime.parse(time24Hour);
String time12Hour = time.format(timeFormatter);
System.out.println(time12Hour);

此代码段的输出符合您的预期:

12:10 PM

请注意您的格式模式字符串 hh:mm a 对于格式化 是正确的。我不知道你用什么解析的,我怀疑你的错误可能在那里。

我已将语言环境添加到格式化程序以控制我获得的语言。由于 AM 和 PM 几乎不用于英语以外的其他语言,因此我选择了 Locale.ENGLISH,但请选择适合您的语言环境。

您使用的 SimpleDateFormat 类是出了名的麻烦而且幸运的是早已过时。相反,我使用的是现代 Java 日期和时间 API java.time。这有一个额外的好处,即无需显式格式化程序即可顺利解析 24 小时格式。这是因为您获得的格式符合国际日期和时间标准 ISO 8601。现代类解析(并打印)ISO 8601 格式作为它们的默认格式。

问题:我可以在 Android 上使用 java.time 吗?

是的,java.time 在新旧 Android 设备上都能很好地工作。它只需要至少 Java 6

  • 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
  • 在 Java 6 和 7 中获取 ThreeTen Backport,这是现代类的反向端口(ThreeTen for JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。并确保使用子包从 org.threeten.bp 导入日期和时间类。

链接

关于android - SimpleDateFormat AM/PM 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55061380/

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