日期解析器每月解析到1月

时间:2016-07-25 09:04:59

标签: java android datetime simpledateformat

我编写了以下代码来将日期解析为此格式25 July, 2016。这就是我为实现这一目标所做的工作。

Date _date;
String datePattern = "dd MMMM, yyyy";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-DD");
SimpleDateFormat format = new SimpleDateFormat(datePattern);    
String parseDate; 
            try {
                _date= formatter.parse(date);  //date Value is coming from serverin this format = 2016-07-21T16:01:57
                parseDate  = format.format(_date);
            } catch (ParseException e) {
                e.printStackTrace();
            }

问题在于,它将所有月份转换为January它将此日期转换为2016-07-21T16:01:57 21 January, 2016

请指导我在这里做错了什么。

3 个答案:

答案 0 :(得分:4)

试试这个:

DateFormat userDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); //time format from server
DateFormat dateFormatNeeded = new SimpleDateFormat("yyyy-MM-dd"); // time format needed
Date newDate = null;
try {
    newDate = userDateFormat.parse(date); // this parses server date format
} catch (ParseException e) {
    e.printStackTrace();
}
//this converts to required date format
String convertedDate = dateFormatNeeded.format(newDate);
return convertedDate;

答案 1 :(得分:4)

您必须将解析器模式与服务器发送的模式匹配:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // this is fine now.

答案 2 :(得分:3)

以下用于第一个格式化程序

 DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");