, Marvins answer, , - .
java doc SimpleDateFormat, YYYY. , . :
public class SimpleDateFormat extends DateFormat {
private char[] compile(String pattern) {
...
if ((tag = DateFormatSymbols.patternChars.indexOf(c)) == -1) {
throw new IllegalArgumentException("Illegal pattern character " +
"'" + c + "'");
}
...
}
...
}
( ) DateFormatSymbols.patternChars:
public class DateFormatSymbols implements Serializable, Cloneable {
...
static final String patternChars = "GyMdkHmsSEDFwWahKzZYuXL";
...
}
Y , ( DateFormatSymbols)?
static final int PATTERN_ERA = 0;
static final int PATTERN_YEAR = 1;
static final int PATTERN_MONTH = 2;
static final int PATTERN_DAY_OF_MONTH = 3;
static final int PATTERN_HOUR_OF_DAY1 = 4;
static final int PATTERN_HOUR_OF_DAY0 = 5;
static final int PATTERN_MINUTE = 6;
static final int PATTERN_SECOND = 7;
static final int PATTERN_MILLISECOND = 8;
static final int PATTERN_DAY_OF_WEEK = 9;
static final int PATTERN_DAY_OF_YEAR = 10;
static final int PATTERN_DAY_OF_WEEK_IN_MONTH = 11;
static final int PATTERN_WEEK_OF_YEAR = 12;
static final int PATTERN_WEEK_OF_MONTH = 13;
static final int PATTERN_AM_PM = 14;
static final int PATTERN_HOUR1 = 15;
static final int PATTERN_HOUR0 = 16;
static final int PATTERN_ZONE_NAME = 17;
static final int PATTERN_ZONE_VALUE = 18;
static final int PATTERN_WEEK_YEAR = 19;
static final int PATTERN_ISO_DAY_OF_WEEK = 20;
static final int PATTERN_ISO_ZONE = 21;
static final int PATTERN_MONTH_STANDALONE = 22;
Y ( ):
static final int PATTERN_WEEK_YEAR = 19;
*_WEEK_YEAR , YEAR ( PATTERN_YEAR).
static final int PATTERN_YEAR = 1;
, (, wiki). ? SimpleDateFormat, , PATTERN_WEEK_YEAR PATTERN_YEAR . ( , DateFormatSymbols.java)... , wiki.
... java ( java doc ), JDK.