解析西班牙语日期错误
Parse Date In Spanish error
你好请帮帮我,我已经经历了很多问题但没有得到解决方案。
代码
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)
请检查此行的拼写
String localDate1="Miércoles, 04 Octubre 2017 12:00 PM";
更改 October 而不是 Octubre 并检查此 Miércoles
您可以使用此代码供您参考::
此代码转换:---
miércoles,2017 年 10 月 4 日 12:00 AM
到
10 月 4 日星期三 00:00:00 IST 2017
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class test {
public static void main(String[] args) throws IOException, ParseException {
//Wednesday, October 4, 2017
String dateInString = "4-Oct-2017";
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = formatter.parse(dateInString);
SimpleDateFormat formato = new SimpleDateFormat("EEEE, dd MMMM yyyy hh:mm aaaa", new Locale("es", "ES"));
String fecha = formato.format(date);
System.out.println(fecha);
String localDate1 = fecha;
Locale spanishLocale = new Locale("es", "ES");
String pattern = "E, dd MMMM yyyy hh:mm aaaa";
SimpleDateFormat spanishLocale1 = new SimpleDateFormat(pattern, spanishLocale);
String dateInSpanish = spanishLocale1.parse(localDate1).toString();
System.out.println(dateInSpanish);
}
}
仅作记录:
幸运的是,您发布了指向偏移量 33(即输入中 "PM" 的位置)的错误消息。所以我们可以声明:
您的问题与设备相关的本地化数据有关(或OS-相关),这里是AM/PM的西班牙语表示的具体数据.在旧版本的 CLDR-unicode 存储库(行业标准作为许多 Java-、C#- 或 Android 发行版的共同来源)中,使用了数据 "AM" 和 "PM" 但在较新的版本中,它使用 "a. m." 或 "p. 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
你好请帮帮我,我已经经历了很多问题但没有得到解决方案。 代码
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)
请检查此行的拼写
String localDate1="Miércoles, 04 Octubre 2017 12:00 PM";
更改 October 而不是 Octubre 并检查此 Miércoles
您可以使用此代码供您参考::
此代码转换:--- miércoles,2017 年 10 月 4 日 12:00 AM 到 10 月 4 日星期三 00:00:00 IST 2017
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class test {
public static void main(String[] args) throws IOException, ParseException {
//Wednesday, October 4, 2017
String dateInString = "4-Oct-2017";
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = formatter.parse(dateInString);
SimpleDateFormat formato = new SimpleDateFormat("EEEE, dd MMMM yyyy hh:mm aaaa", new Locale("es", "ES"));
String fecha = formato.format(date);
System.out.println(fecha);
String localDate1 = fecha;
Locale spanishLocale = new Locale("es", "ES");
String pattern = "E, dd MMMM yyyy hh:mm aaaa";
SimpleDateFormat spanishLocale1 = new SimpleDateFormat(pattern, spanishLocale);
String dateInSpanish = spanishLocale1.parse(localDate1).toString();
System.out.println(dateInSpanish);
}
}
仅作记录:
幸运的是,您发布了指向偏移量 33(即输入中 "PM" 的位置)的错误消息。所以我们可以声明:
您的问题与设备相关的本地化数据有关(或OS-相关),这里是AM/PM的西班牙语表示的具体数据.在旧版本的 CLDR-unicode 存储库(行业标准作为许多 Java-、C#- 或 Android 发行版的共同来源)中,使用了数据 "AM" 和 "PM" 但在较新的版本中,它使用 "a. m." 或 "p. 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