объяснение поведения от SimpleDateFormat - PullRequest
0 голосов
/ 20 июля 2010

Попробуйте это:

DateFormat df = new SimpleDateFormat("y");
System.out.println(df.format(new Date()));

Не читая Javadoc для SimpleDateFormat, что вы ожидаете, что это выведет?Мое ожидание было "0".То есть последняя цифра текущего года, которая равна 2010.

Вместо этого она дополняет его до 2 цифр, как если бы строка формата была "yy".

Зачем?Кажется довольно странным.Если бы я хотел 2 цифры, то использовал бы «уу».

Ответы [ 3 ]

5 голосов
/ 20 июля 2010

«Без чтения javadoc» чаще всего опасное отношение. Джошуа Блох написал книгу об этом странном поведении на Java.

4 голосов
/ 20 июля 2010

Вот почему вам нужно проверить документацию :

Для анализа с сокращенным шаблоном года ("y" или "yy") SimpleDateFormat должен интерпретировать сокращенный год относительно некоторого столетия.

"y" - это сокращение, поэтому это ожидаемое поведение.

0 голосов
/ 20 июля 2010

Если вам нужна только цифра, вы можете:

System.out.println(df.format(new Date()).substring(1));

:)

...