use*_*122 2 java parsing simpledateformat java-7
我正在尝试使用parse函数SimpleDateFormat
将a String
转换为aDate
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
String strInput1 = "29-04-2014";
System.out.println("string 1: " + strInput1);
Date date1 = new Date();
try {
date1 = sdf.parse(strInput1);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("date 1: " + date1.toString());
String strInput2 = sdf.format(date1);
System.out.println("string 2: " +strInput2);
Date date2 = new Date();
try {
date2 = sdf.parse(strInput2);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("date 2 " + date2);
Run Code Online (Sandbox Code Playgroud)
输出为date1
is Mon Dec 30 00:00:00 GMT 2013
,然后正确解析为30-12-2014
.
我认为错误是在sdf
初始化时的某个地方.
你正在使用的YYYY
是哪一周.你的意思是yyyy
,这是一年.
只需将格式更改为:
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Run Code Online (Sandbox Code Playgroud)
该YYYY
格式说明很少使用,当它被使用时,应结合使用E
/ u
(一周名称/天数)和w
(一周的星期).
请注意,您应该考虑设置您的时区SimpleDateFormat
...另外,如果您使用的是Java 8,请使用该java.time
软件包,否则Joda Time是一个比它更清晰的库java.util.Date
.