Question 1. This is a partial duplicate of Why Does Java's SimpleDateFormat parse this. The second answer on the question answers this nicely. The crux of it is this:
Number: For parsing, the number of pattern letters is ignored unless it's needed to separate two adjacent fields.
Year: During parsing, only strings consisting of exactly two digits […] will be parsed into the default century. Any other numeric string, such as a one digit string, a three or more digit string, or a two digit string that isn't all digits (for example, "-1"), is interpreted literally. So "01/02/3" or "01/02/003" are parsed, using the same pattern
Question 2. Look carefully: your input format is not the same as the format that you are passing to the function.
new SimpleDateFormat("dd/MM/yyyy");
vs.
format.parse("01/01/13");
Either parse to 01/01/2013
or use the date forat 'dd/MM/yy'
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…