第一个问题:
new Date(df.parse("09/01/3~34").getTime()); // Produces '09/01/3'
根据DateFormat#parse() JavaDoc:
从给定字符串产生日期的开始解析文本。 该方法可能不会使用给定字符串的整个文本。
因此,在它解析来自String的值之后,它停止在其上搜索。当它找到~
符号时,它将3
值解析为年,并停止查看字符串。
第二个问题:
new Date(df.parse("09/01/100000").getTime()); // Produces ' 000-09-01'
它不生产 '000-09-01'。以下代码:
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
java.util.Date parsedDate = df.parse("09/01/100000");
System.out.println(parsedDate);
System.out.println(df.format(parsedDate));
输出:
Fri Sep 01 00:00:00 BRT 100000
09/01/100000
然而,这似乎是与JDK的java.sql.Date#toString
方法中的错误。要正确显示此java.sql.Date
,试图将它传递给你的DateFormat#format
方法:
java.sql.Date sqlDt = new java.sql.Date(df.parse("09/01/10000").getTime());
System.out.println(df.format(sqlDt));
输出:09/01/100000
1.解析器在阅读可解释的内容后停止。 2.解析器可以是* lenient *。 –
'parsedDate'的价值是什么?我猜'3-01-09'。 – 2014-01-23 14:04:10
是的,我得到了'0003-09-01'。这是我得到'df.parse(“09/01/3〜qwwww”)' – gowthamvelusamy