Это просто часть ужасающего беспорядка, который является API дат / времени Java. Перечислить, что с ним не так, займет очень много времени (и я уверен, что не знаю половины проблем). Разумеется, работа с датами и временем сложна, но все равно.
Сделайте себе одолжение и используйте Joda Time вместо, или, возможно, JSR-310 .
EDIT: Что касается причин, почему, как отмечено в других ответах, это может быть связано с старыми API-интерфейсами C или просто с общим чувством начала всего от 0 ... за исключением того, что дни начинаются с 1 , конечно. Я сомневаюсь, что кто-то, кто не был в оригинальной команде по внедрению, действительно мог объяснить причины, - но опять же я настоятельно призывал читателей не беспокоиться о том, почему были приняты плохие решения, чтобы посмотреть на всю гамму гадости в java.util.Calendar
и найти что-то лучшее.
Одна точка, которая является в пользу использования индексов на основе 0, состоит в том, что она облегчает такие вещи, как «массивы имен»:
// I "know" there are 12 months
String[] monthNames = new String[12]; // and populate...
String name = monthNames[calendar.get(Calendar.MONTH)];
Конечно, это не удается, как только вы получите календарь с 13 месяцами ... но, по крайней мере, указанный размер - это количество ожидаемых месяцев.
Это isn ' t a хорошая причина, но это причина ...
EDIT: В качестве комментариев типа запросов есть некоторые идеи о том, что я считаю неправильным Дата / Календарь:
Date
и Calendar
как разные вещи, но отсутствует разделение «локальных» и «зональных» значений, а также дата / время и дата против времени Date.toString()
, которая всегда использует локальный часовой пояс системы (это путают многие Stack Переполнение пользователей до сих пор) Этот вопрос будет закрыт очень скоро, потому что он не соответствует правилам SO. (Прочтите комментарии к вашему вопросу, чтобы узнать об этом). Вы действительно должны приложить больше усилий при написании вопросов.
Но я взглянул на твой сайт. Вы можете решить свою проблему двумя (возможно, более) способами.
добавить justify-content:center
к родительской строке этих 3 столбцов. Будучи элементом display: flex
, он будет центрировать их по горизонтали.
с помощью визуального композитора легко. Просто добавьте 2 маленьких столбца (пусто) слева и справа и больший столбец посередине. Что-то вроде 1/4 1/2 1/4. И в этом «большем» столбце вы можете добавить новую строку, содержащую 3 столбца (как у вас сейчас). Или есть больше возможностей сделать это. Просто поиграйте с визуальным композитором