2

我正在尝试将格式为“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

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

4

2 回答 2

3

您没有设置年份,所以SimpleDateFormat使用时代的年份。1970 年 5 月 15 日发生在一个星期五。

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

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

于 2013-04-26T12:07:45.500 回答
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

于 2013-04-26T12:11:46.077 回答