SimpleDateFormat.parse()未使用正确的日期格式

时间:2014-09-07 16:57:53

标签: java android simpledateformat

所以我试图将带有日期的字符串解析为另一种格式,但它没有改变格式。解析函数似乎可能会覆盖SimpleDateFormat设置吗?

Date dateOfItem = new SimpleDateFormat("E, d MMMM yyyy", Locale.ENGLISH).parse(item.date);
Log.v("APP", dateOfItem.toString());

item.date例如:星期二,2015年5月12日 这就是我希望格式在Date中的方式。但日志显示为: Tue May 12 00:00:00 CDT 2015 ,这不是我在SimpleDateFormat中的格式。

那么如何将该字符串转换为具有我在SimpleDateFormat中作为参数的格式的日期?

5 个答案:

答案 0 :(得分:3)

Date没有格式。它只是

  

表示特定时刻,精度为毫秒

您在日志中看到的内容是Date#toString()的结果。

因此,请使用SimpleDateFormat format(Date) DateString对象,或使用原来的{{1}}值。

答案 1 :(得分:1)

使用此过程

             DateFormat df = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss E", Locale.getDefault());
              curdate =  df.parse("String date");  
             SimpleDateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy");
           newFormat = formatter.format(curdate);

答案 2 :(得分:1)

您正在进行反向解析。

你有item.data,它是E, d MMMM yyyy格式,然后解析它。 如果要以指定格式打印日期,则应使用SimpleDateFormat#format方法。

SimpleDateFormat sdf = new SimpleDateFormat("E, d MMMM yyyy");
Log.v("APP", sdf.format(item.date));

同时检查javadoc

答案 3 :(得分:1)

您从String开始并加入Date。这就是你使用SimpleDateFormat for。

的全部内容

然后您使用的是日期的默认toString()方法,因此它不会应用任何自定义格式。

您需要做的是:

SimpleDateFormat format = new SimpleDateFormat("E, d MMMM yyyy", Locale.ENGLISH);
Date dateOfItem = format.parse(item.date); //string to date
Log.v("APP", format.format(dateOfItem)); //or date to string

答案 4 :(得分:1)

请改为尝试:

DateFormat formatter = new SimpleDateFormat("E, d MMMM yyyy", Locale.ENGLISH);
Log.v("APP", formatter.format(dateOfItem));

使用dateOfItem.toString()使用自己的output format