DateFormat解析错误

时间:2012-02-15 18:28:54

标签: java datetime

我有一个约会。例如02/16/2012。为了使用我的数据库格式,我需要做的是将其转换为2012-02-16。我认为这将非常简单。但我无法工作。这是我的日期解析器。

String endDateString = "02/16/2012"
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); 
endDate = dateFormat.parse(endDateString)

有什么建议吗?感谢。

6 个答案:

答案 0 :(得分:4)

您要做的是将传入格式解析为Date对象

final SimpleDateFormat idf = new SimpleDateFormat("MM/dd/yyyy");
final Date indate = idf.parse("02/16/2012");

然后将Date对象重新格式化为您想要的格式

final SimpleDateFormat odf = new SimpleDateFormat("yyyy-MM-dd");
final String s = odf.format(indate);

答案 1 :(得分:1)

您应该从一种正确的格式解析它,然后使用另一种正确的格式转换为TO字符串。你在做什么 - 试图用MM/dd/yyyy格式解释yyyy-MM-dd格式的日期,即不正确。

<强>样品

public static void main(String[] args) throws ParseException {

    SimpleDateFormat sourceFormat = new SimpleDateFormat("MM/dd/yyyy");
    SimpleDateFormat destinationFormat = new SimpleDateFormat("yyyy-MM-dd");

    String sourceDateString = "02/16/2012";
    String destinationDateString;

    Date dat; // this object stores "perfect" date object

    // interpreting string with input format and converting it to date
    dat = sourceFormat.parse(sourceDateString);

    // expressing date object as string in destination format
    destinationDateString = destinationFormat.format(dat);

    System.out.format("Done from %s to %s\n", sourceDateString, destinationDateString));


}

答案 2 :(得分:0)

您指定的日期格式必须与输入的日期格式匹配,如下所示:

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 

答案 3 :(得分:0)

此代码段可以告诉您如何完成它。

SimpleDateFormat inputDateFormat = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String endDateString = "02/16/2012";
String endDate =     outputDateFormat.format(inputDateFormat.parse(endDateString));

参考:SimpleDateFormat

答案 4 :(得分:0)

您还可以在数据库级别转换日期。例如,MySQL具有STR_TO_DATE函数。在你的情况下,它将是STR_TO_DATE('02 / 16/2012','%m /%d /%Y')

答案 5 :(得分:-1)

您正在使用错误的格式进行解析

new SimpleDateFormat("MM/dd/yyyy");