因此,我正在尝试将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
?
如果是,那么我该怎么做。如果没有,那怎么办?
答案 0 :(得分:3)
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
对于 formatting 是正确的。我不知道您用来解析什么,我怀疑您的错误可能在那里。
我已经向格式化程序添加了语言环境,以控制获得的语言。由于AM和PM除了英语以外几乎没有其他语言使用,因此我选择了Locale.ENGLISH
,但是请选择适合您的语言环境。
众所周知,您使用的SimpleDateFormat
类很麻烦,而且幸运的是已经过时了。相反,我使用的是java.time,这是现代的Java日期和时间API。这具有额外的好处,即无需显式格式化程序就可以顺利解析24小时格式。这是因为您使用的格式符合ISO 8601(国际日期和时间标准)。现代类将默认解析(并打印)ISO 8601格式。
是的,java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。答案 1 :(得分:0)
实际上,您可以使用两个组件来显示12小时格式:
一切正常。现在,您必须使用最适合您的格式。