我正在尝试将“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
任何想法为什么星期一变成星期五?
答案 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