解析日期在西班牙语错误

时间:2017-09-21 05:12:13

标签: 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)

3 个答案:

答案 0 :(得分:3)

仅供记录:

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

您的问题与设备相关的本地化数据(或依赖于操作系统)有关,此处是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

答案 1 :(得分:0)

请检查此行的拼写

var express = require("express");
var app = express();
var port = 3000;
var io = require('socket.io-client/dist/socket.io');


var socket = io.connect('http://socket.coincap.io', {transports: ['websocket']});

socket.on('trades', function(tradeMsg) {

console.log("worked");

});



app.listen(port, () => {
 console.log("Server listening on port " + port);
});

更改 10月而不是 Octubre ,并检查此Miércoles

答案 2 :(得分:-1)

您可以使用此代码作为参考::

此代码转换:--- miércoles,04 octubre 2017 12:00 AM 至 2017年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);
    }
}