我正在使用
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy hh:mm a");
String dateAsString = dateFormat.format(gmt);
并且获得String 06-06-2017 08:15 am.m. 为什么我会在上午或下午停止工作?
答案 0 :(得分:2)
AM / PM / a.m.实际上取决于设备。在其他设备上尝试相同的代码,您可能会看到不同的结果。如果您只需要AM / PM,那么您需要通过替换点并将其转换为大写来手动完成。
答案 1 :(得分:2)
这取决于语言环境。如果你使用SimpleDateFormat
(你可能不想这样做,见下文),我建议你给它一个明确的语言环境。您构建的那个使用设备的默认值,这解释了为什么您在不同设备上获得不同的结果。如果您需要,请使用new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.getDefault())
,以便读者知道您已经考虑过它。要确保获得AM和PM,请使用例如new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH)
。
为什么不想使用SimpleDateFormat
?我认为它已经过时了,因为2014年更新了Java 1.0和1.1类Java 8。它们也被ThreeTenABP
向后移植到Android Java 7。得到这个并写下例如:
LocalDateTime gmt = LocalDateTime.of(2017, Month.JUNE, 6, 8, 15);
DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern("MM-dd-uuuu hh:mm a",
Locale.ENGLISH);
String dateAsString = gmt.format(dateTimeFormat);
结果是
06-06-2017 08:15 AM
要明确说明时间是格林尼治标准时间,您可以使用偏移量为OffsetDateTime
的{{1}}。