字符串日期值转换

时间:2013-05-09 15:27:12

标签: java

我正在将String转换为Date格式。但它返回"Unparseable date"。例如,

String date= "Wednesday, May 15, 2013";

我想将此转换为字符串,如"2013-05-15"如何做到这一点?

4 个答案:

答案 0 :(得分:6)

使用SimpleDateFormat两次:一次解析Date,另一次以所需格式呈现:

Date date;
String display = new SimpleDateFormat("yyyy-MM-dd").format(
        new SimpleDateFormat("EEEE, MMMM dd, yyyy").parse(date)
    );

您的示例日期很不幸,因为它只使用3个字母的月份“May”,因此我无法判断您的月份名称是否全部被截断为3个字母,或者它们是否为全名。我假设几个月是全名,但如果它们被截断,请在第二个格式字符串中将MMMM更改为MMM

答案 1 :(得分:2)

这样的事情可能会有所帮助(将日期字符串解析为日期对象并以新格式重新格式化):

    String dateString  = "Wednesday, May 15, 2013";
    DateFormat format1 = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
    Date date = format1.parse(dateString);

    DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); 
    String updatedDateString = format2.format(date);
    System.out.println("Updated Date > "+updatedDateString);

答案 2 :(得分:0)

在我的实验中,您需要执行以下操作...请参阅API以了解如何构建格式字符串。 http://docs.oracle.com/javase/6/docs/api/index.html?java/text/DateFormat.html

String myDateAsString = "Wednesday, May 15, 2013";
SimpleDateFormat df = new SimpleDateFormat("EEEE, MMM d, yyyy");
Date d = new Date();
try {
    d = df.parse(myDateAsString);
} catch (ParseException e1) {
    System.out.println("Could not parse...something wrong....");
    e1.printStackTrace();
}
df.applyPattern("yyyy-MM-d");
String convertedDate = df.format(d);
System.out.println(convertedDate);

这将是一个很好的方法。

答案 3 :(得分:0)

这样的事情:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringDate {
    public static void main(String[] args) throws ParseException{
        String dateString  = "Wednesday, May 15, 2013";
        DateFormat format1 = new SimpleDateFormat("E, MMM dd, yyyy"); 
        Date date = format1.parse(dateString);
        DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); 
        String updatedDateString = format2.format(date);
        System.out.println("Updated Date > "+updatedDateString);
    }
}