我正在使用DateFormatter“ Thu Jun 28 14:25:00 GMT + 03:00 2018”进行解析,它正确地输出了Jun 28,2018 2:25:00 pm。但是,当用户切换到西班牙语语言环境时,格式化程序将输出jun。 28,2018 2:25:00羽米这正常吗?
这是我解析日期的方式
DateFormatter dateFormatter = new DateFormatter();
dateFormatter.setDateFormatPattern("MMM dd, yyyy hh:mm:ss a");
mCalendar = new GregorianCalendar(mTimeZone);
mCalendar.setTime(date);
mSimpleDateFormat.applyPattern(pattern);
mSimpleDateFormat.setTimeZone(mTimeZone);
mSimpleDateFormat.format(mCalendar.getTime());
答案 0 :(得分:3)
这是正确的表示形式。例如,比较Spanish AM / PM字符串和Italian AM / PM字符串。您会看到西班牙语是下午,而意大利语是下午。
尽管您可能想参考this Quora答案,该答案指出西班牙语时间始终以24小时格式显示。
答案 1 :(得分:2)
Γειασου。我相信vguzzi’s answer是正确的。我想添加两条消息:
GregorianCalendar
,Date
,TimeZone
和臭名昭著的SimpleDateFormat
。而是使用java.time
(现代的Java日期和时间API)。代码示例:
DateTimeFormatter originalFormatter
= DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ROOT);
DateTimeFormatter userFormatter
= DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
String originalDateTimeString = "Thu Jun 28 14:25:00 GMT+03:00 2018";
ZonedDateTime dateTime = ZonedDateTime.parse(originalDateTimeString, originalFormatter);
String formattedDateTime = dateTime.format(userFormatter);
System.out.println(formattedDateTime);
在美国语言环境中运行时,它会打印出与您类似的结果:
2018年6月28日,下午2:25:00
已经在英国的语言环境有所不同:
2018年6月28日,14:25:00
有英文和英文。而且Java知道西班牙语也不会使用AM和PM:
6月28日。 2018 14:25:00
得知希腊确实做到了,这真让我感到惊讶:
2018年10月28日,2:25:00μ.μ。
输出示例来自Java 9上运行的代码。在某些情况下,Android上的语言环境数据可能会有所不同,但输出会略有不同,但仍非常适合不同的本地受众。
是的,java.time
在较新的Android设备上都能很好地工作。它只需要至少Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。