使用区域设置将字符串转换为日期

时间:2018-04-28 07:27:45

标签: java android datetime simpledateformat datetime-parsing

我试图将字符串转换为日期,但每次我都这样做会不断向我投掷错误,我不知道我错过了什么

    Date date = new Date();
    SimpleDateFormat format = new SimpleDateFormat("EEE, MMM d, yy hh:mm a", Locale.ENGLISH);
    try {
        // m brings in all variables from a get/setter
        date = format.parse(m.getEventTime());
    } catch (ParseException e) {
        e.printStackTrace();
        Log.d("Response.Error.Date", m.getEventTime());
    }
    eventTime.setText(date.toString());

我的变量m.getEventTime()传递以下字符串2018-04-28 14:00:00

我尝试将字符串作为2018-04-28T14:00:00Z传递无效。

来自try / catch块的堆栈跟踪没有错误,但是日志正在打印D/Response.Error.Date: 2017-08-19 15:00:00 当我将e.toString()添加到日志时,它打印出D/Response.Error.Date: 2017-08-19 15:00:00 java.text.ParseException: Unparseable date: "2017-08-19 15:00:00"

在运行时的实际应用中,时间显示为now星期六4月28日08:22:33 GMT + 01:00 2018

我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

你可以试试这个,

Date date = new Date();
SimpleDateFormat oldformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat format = new SimpleDateFormat("EEE, MMM d, yy hh:mm a", Locale.ENGLISH);
try {
    // m brings in all variables from a get/setter
    date = oldformat.parse(m.getEventTime());
} catch (ParseException e) {
    e.printStackTrace();
    Log.d("Response.Error.Date", m.getEventTime());
}
eventTime.setText(format.format(date));

答案 1 :(得分:1)

你可以得到这样的时间格式:

    String dateTime = null;

    DateFormat df = new SimpleDateFormat("dd-MM-yyyy, hh:mm a");
                              //here you can use your required format 

    dateTime = df.format(new Date(stringTime));

答案 2 :(得分:0)

您正在将日期转换为导致例外的英语:

请更改:

SimpleDateFormat format = new SimpleDateFormat("EEE, MMM d, yy hh:mm a", Locale.ENGLISH);

eventTime.setText(date.toString());

SimpleDateFormat format = new SimpleDateFormat("EEE, MMM d, yy hh:mm a");

eventTime.setText(format.format(date));