java - 解析西类牙语日期错误

标签 java android date date-parsing

您好,请帮帮我,我遇到了很多问题,但没有得到解决。 代码

String localDate1="Miércoles, 04 Octubre 2017 12:00 PM";
Locale spanishLocale=new Locale("es", "ES");
SimpleDateFormat spanishLocale1=new SimpleDateFormat(getString(R.string.jom_events_date_input_format_12_hrs),spanishLocale);
String dateInSpanish=spanishLocale1.parse(localDate1).toString();
Log.v("@@@WWW","in Spanish: "+dateInSpanish);

错误

java.text.ParseException: Unparseable date: "Miércoles, 04 Octubre 2017 12:00 PM" (at offset 33)

最佳答案

仅供记录:

幸运的是,您已经发布了指向偏移量 33 的错误消息(即输入中“PM”的位置)。所以我们可以说:

您的问题与设备相关的本地化数据(或操作系统相关)有关,这里是 AM/PM 的西类牙语表示的具体数据。在旧版本的 CLDR-unicode 存储库(作为许多 Java、C# 或 Android 发行版的公共(public)源的行业标准)中,使用数据“AM”和“PM”,但在较新的版本中,它使用“a.m”。或“下午”西类牙语。

因此,如果要解析的输入(包含“PM”)与您拥有的真实 i18n 数据不匹配,我建议作为实用的解决方案字符串预处理:

String input = "Miércoles, 04 Octubre 2017 12:00 PM";
input = input.replace("PM", "p. m.");
// now parse your input with Spanish locale and the appropriate pattern

关于java - 解析西类牙语日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46335911/

相关文章:

Java - boolean 方法总是返回 false

java.lang.IllegalStateException : Multiple representations of the same entity with @ManyToMany 3 entities

java - 使用 Clojure 中的静态方法

java - 简单日期格式化程序中的月份始终返回 JANUARY

python - 从 csv 读取解析时修改日期时间格式 - pandas

java - 找不到 hazelcast 映射器类

android - 使用 fragment 时 getContext() 和 requireContext() 的区别

android - 如何解决与位置无关的可执行错误

java - 如何将大整数转换为二进制? - java

mysql - 如何将excel中的日期格式更改为文本,以便它可以在mysql中转换