所以,我正在尝试将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
?
如果是,那我该怎么办呢。如果没有,那么最近的工作是什么?
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
请注意,您的格式模式字符串hh:mm a
对于格式化是正确的。我不知道你用什么解析,我怀疑你的错误可能已经存在。
我已经在格式化程序中添加了一个语言环境来控制我得到的语言。由于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(JST-310的ThreeTen)。实际上有两个组件可用于显示12小时格式:
一切都按预期在这里工作。您现在必须使用最适合您的格式。