如何传递日期格式对SimpleDateFormat的响应?

问题描述:

我得到日期甲酸反应像11:10 AM Thursday - March, 02 2017如何传递日期格式对SimpleDateFormat的响应?

我已经试过这样

String time = 11:10 AM Thursday - March, 02 2017 
    try { 


Date cDate = new SimpleDateFormat("hh:mm aa EEE - MMM, dd yyyy", Locale.ENGLISH).parse(time); 
        System.out.println(cDate); 

        Calendar cal = Calendar.getInstance(); 
        cal.setTime(cDate); 
        cal.setTimeZone(TimeZone.getTimeZone("UTC")); 

        String monthName = new SimpleDateFormat("MMMM", Locale.ENGLISH).format(cal.getTime()); 
        String day = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(cal.getTime()); 
        int year = Calendar.getInstance().get(Calendar.YEAR); 
        String date = new SimpleDateFormat("dd", Locale.ENGLISH).format(cal.getTime()); 
        String hour = new SimpleDateFormat("hh", Locale.ENGLISH).format(cal.getTime()); 
        String min = new SimpleDateFormat("mm", Locale.ENGLISH).format(cal.getTime()); 
        String am_pm = new SimpleDateFormat("a", Locale.ENGLISH).format(cal.getTime()); 

       }catch (Exception e){ 
        e.printStackTrace(); 
       } 

而且走得异常说:

无法解析的日期: “11:10 AM星期四 - 三月,02 2017年”(偏移量9)

那么如何通过日期格式这样的字符串?

+0

尝试使用'EEEE'代替'EEE'。我不确定它会起作用,但是因为'EEE'是为了缩短一周中的某一天(例如Tue) –

嗯,你只是错过了一个小的事情。

您使用的是像:

Date cDate = new SimpleDateFormat("hh:mm aa EEE - MMM, dd yyyy", Locale.ENGLISH).parse(time); 

相反,你需要使用这样的

Date cDate = new SimpleDateFormat("hh:mm aa EEE - MMM, dd yyyy", Locale.ENGLISH).parse(time); 

你错过了周四的一个额外的空间

+0

谢谢你!你让我今天一整天都感觉很好。非常感谢。 –

+0

@NiteshRathod ..如果这解决了你的问题,那么请接受这个答案 – curiousMind

+0

你知道如何转换此日期星期五03三月02:24:21 GMT + 12:00 2017设备时间。 –

使用EEEE全名状

周四
Date cDate = new SimpleDateFormat("hh:mm aa EEEE - MMM, dd yyyy", Locale.ENGLISH).parse(time); 
+0

我已经尝试过了,但它说:无法解析的日期:“2017年2月12日12:17”(偏移量9) –