解析西班牙语日期错误

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