Java SimpleDateFormat解析返回错误的一天

时间:2013-04-26 12:03:07

标签: java parsing datetime simpledateformat

我正在尝试将“5月15日星期一下午1:00”格式的字符串解析为日期时间,以便我可以将其输入数据库。然而,当我测试它时,解析不会返回正确的一天。有没有人有任何想法发生了什么?

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

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

        String inDateTime = "Monday, May 15 at 1:00 PM";

        Date date = new SimpleDateFormat("EEE, MMM dd 'at' hh:mm aa").parse(inDateTime);

        String outDateTime = new SimpleDateFormat("EEEEEE MMMMMM dd hh:mm aa").format( date );

        System.out.println(outDateTime);

    }
}

netbeans的输出

[exec:exec]
Friday May 15 01:00 PM

任何想法为什么星期一变成星期五?

2 个答案:

答案 0 :(得分:3)

您没有设置年份,因此SimpleDateFormat正在使用纪元中的那一年。 1970年5月15日星期五发生。

如果存在月份和日期字段,则忽略日输入字段,因此可以省略此字段。

您需要指定5月15日星期一发生的年份。

答案 1 :(得分:0)

您的代码等同于

String inDateTime = "1970 Monday, May 15 at 1:00 PM";

    Date date = new SimpleDateFormat("yyyy EEE, MMM dd 'at' hh:mm aa")
                 .parse(inDateTime);

String outDateTime = new SimpleDateFormat("EEEEEE MMMMMM dd hh:mm aa")
                 .format( date );

    System.out.println(outDateTime); //prints Friday May 15 01:00 PM

请添加year