Android 12 小时时间格式出错
Android 12 hours Time Format getting wrong
我正在使用
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy hh:mm a");
String dateAsString = dateFormat.format(gmt);
并获取字符串 06-06-2017 08:15 a.m。
为什么我得到 a.m。设置上午或下午?
AM/PM/a.m。实际上取决于设备。在其他设备上尝试相同的代码,您可能会看到不同的结果。如果您只需要 AM/PM,那么您需要通过替换点并将其转换为大写来手动完成。
这取决于语言环境。如果你使用 SimpleDateFormat
(你可能不想这样做,见下文),我建议你给它一个明确的语言环境。您构建的那个使用设备的默认值,这解释了为什么您在不同的设备上得到不同的结果。如果你想要那个,使用 new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.getDefault())
这样 reader 就知道你已经考虑过了。为确保您获得上午和下午,请使用例如 new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH)
.
您为什么不想使用 SimpleDateFormat
?我认为它早已过时,因为 Java 1.0 和 1.1 类 的更好替代品在 2014 年与 Java 8 一起出现。它们也被移植到 Android Java 7 在 ThreeTenABP
。得到这个并写例如:
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
要明确表示时间为 GMT,您可以使用带偏移量 ZoneOffset.UTC
的 OffsetDateTime
。
Link: .
我正在使用
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy hh:mm a");
String dateAsString = dateFormat.format(gmt);
并获取字符串 06-06-2017 08:15 a.m。 为什么我得到 a.m。设置上午或下午?
AM/PM/a.m。实际上取决于设备。在其他设备上尝试相同的代码,您可能会看到不同的结果。如果您只需要 AM/PM,那么您需要通过替换点并将其转换为大写来手动完成。
这取决于语言环境。如果你使用 SimpleDateFormat
(你可能不想这样做,见下文),我建议你给它一个明确的语言环境。您构建的那个使用设备的默认值,这解释了为什么您在不同的设备上得到不同的结果。如果你想要那个,使用 new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.getDefault())
这样 reader 就知道你已经考虑过了。为确保您获得上午和下午,请使用例如 new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH)
.
您为什么不想使用 SimpleDateFormat
?我认为它早已过时,因为 Java 1.0 和 1.1 类 的更好替代品在 2014 年与 Java 8 一起出现。它们也被移植到 Android Java 7 在 ThreeTenABP
。得到这个并写例如:
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
要明确表示时间为 GMT,您可以使用带偏移量 ZoneOffset.UTC
的 OffsetDateTime
。
Link: