我想将String解析为java日期对象

时间:2013-11-28 06:04:54

标签: java string parsing date data-conversion

你好我有这种格式的日期2013-10-31T19:00:00Z现在我想把这个日期显示为yyyy/mm/dd这个格式。我已经使用过这段代码但是它给了我一个异常帮助我

String startDateString = "2013-10-31T19:00:00Z";

        DateFormat df = new SimpleDateFormat("yyyy/mm/dd"); 
        Date startDate;
        try {
            startDate = df.parse(startDateString);
            String newDateString = df.format(startDate);
            System.out.println("Date is "+newDateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }

7 个答案:

答案 0 :(得分:2)

您可以使用SimpleDateFormatparse方法来解析日期,然后使用format方法以您喜欢的格式输出它。

试试这个:

String startDateString = "2013-10-31T19:00:00Z";

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
DateFormat outputFormat = new SimpleDateFormat("yyyy/MM/dd");

Date date = inputFormat.parse(startDateString);
System.out.println("Date is " + outputFormat.format(date));

输出:

Date is 2013/10/31

答案 1 :(得分:2)

那是因为你特意告诉Java寻找一个4位数的年份,然后是2位数的月份和2位数的日期。直接从文档中获取,你想要的是

"yyyy-MM-dd'T'HH:mm:ssZ"

答案 2 :(得分:2)

试试这个

String DateStr="2013-10-31T19:00:00Z";
    SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");
    Date d = new SimpleDateFormat("yyyy-MM-dd").parse(DateStr); 
System.out.println(sim.format(d));

输出 2013-10-31

答案 3 :(得分:1)

您需要单独的SimpleDateFormat来解析Datestring。试试这个:

String startDateString = "2013-10-31T19:00:00Z";
DateFormat originalFormat = new SimpleDateFormat("yyyy-mm-dd'T'HH:MM:SS'Z'");
DateFormat df = new SimpleDateFormat("yyyy/mm/dd");
Date startDate;
try {
    startDate = originalFormat.parse(startDateString);
    String newDateString = df.format(startDate);
    System.out.println("Date is " + newDateString);
} catch (ParseException e) {
    e.printStackTrace();
}

答案 4 :(得分:1)

您需要两个不同的DateFormat。一个用于解析日期,另一个用于格式化日期。

 String startDateString = "2013-10-31T19:00:00Z";

    DateFormat df = new SimpleDateFormat("yyyy/mm/dd"); 
    DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:SS'Z'"); 
    Date startDate;
    try {
        startDate =df1.parse(startDateString);
        String newDateString = df.format(startDate);
        System.out.println("Date is "+newDateString);
    } catch (ParseException e) {
        e.printStackTrace();
    }

答案 5 :(得分:1)

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateInString = "07/06/2013";

try {

    Date date = formatter.parse(dateInString);
    System.out.println(date);
    System.out.println(formatter.format(date));

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

这是一个简单的例子

答案 6 :(得分:0)

试试这个:

        try {
            String startDateString = "2013-10-31T19:00:00Z";
            DateFormat input = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
            DateFormat output = new SimpleDateFormat("yyyy/MM/dd");
            Date date = input.parse(startDateString);
            System.out.println("Date is " + output.format(date));
        } catch (ParseException e) {

            e.printStackTrace();
        }

指出代码中的另一个简单错误

您编码为DateFormat df = new SimpleDateFormat("yyyy/mm/dd");

此处mm适用于minutesmonth使用MM