На это было много ответов, но я дам свое мнение по этому вопросу в любом случае. Причина этого нечетного поведения, как говорилось ранее, исходит от POSIX C time.h
, где указаны месяцы, когда они хранятся в int с диапазоном 0-11. Чтобы объяснить, почему, посмотрите на это так: годы и дни считаются числами на разговорном языке, но у месяцев есть свои имена. Поэтому, поскольку январь является первым месяцем, он будет сохранен как смещение 0, первый элемент массива. monthname[JANUARY]
будет "January"
. Первый месяц в году - это элемент массива первого месяца.
Число дней, с другой стороны, поскольку у них нет имен, сохранение их в int как 0-30 будет путать, добавьте много day+1
инструкций для вывода и, конечно же, склонны к большому количеству ошибок.
Как говорится, непоследовательность запутывает, особенно в javascript (который также унаследовал эту «функцию») язык сценариев, где это должно быть абстрагировано далеко от langague.
TL; DR: Поскольку в месяцах имена и дни месяца этого не делают.
Добавление android: возвышение действительно решило его.
Я думал, что этот атрибут будет разбиваться на устройства с предварительным леллипом, так как он не отображается в редакторе макетов, когда значение minSDK установлено на значение меньше 21.