A java.time.LocalDate
(или аналогичные классы, эквивалентные логическому эквиваленту org.joda.time.LocalDate
) - лучший способ представить дату рождения (DOB) в Java-коде.
Обратите внимание, что DOB является не хорошо моделируется как java.sql.Date
или java.util.Date
: эти модели моментов во время, а не часовой пояс независимых дат.
Несмотря на то, что человек явно родился в какой-то момент времени, мы не сообщаем, сообщая, когда мы рождены. Учтите, что у двух детей, родившихся в один и тот же момент в разных часовых поясах, могут быть разные даты рождения - если ребенок в Нью-Йорке родился в 2 часа ночи 1 апреля, ребенок, родившийся в Лос-Анджелесе, родился в 10 вечера 31 марта.
Ни одна из детских дат рождения не меняется, когда они путешествуют в другой город (или где-нибудь еще, конечно). Таким образом, если вы храните мгновенный рождения, вам также необходимо сохранить часовой пояс рождения, чтобы правильно интерпретировать этот момент как дату .
Но хранить мгновение и часовой пояс неудобно: она не только больше данных для хранения, но и трудно интерпретировать его «на глаз» (например, это трудно сказать, что дата (1459438541000, America/Los_Angeles)
относится к). Гораздо легче хранить и интерпретировать год, месяц и день: (2016, 3, 31)
.
Обычно можно было бы сохранить дату рождения как объект даты. Но это зависит от приложения и базовой базы данных. Можете ли вы предоставить дополнительную информацию? – jojonas
Ну в базе данных пользователи даты рождения будут храниться как тип «DATE», поэтому в моей программе Java, когда я объявляю объекты: 'public class User { Строка firstName, lastName, email, school, sType, пароль; int dob; ' было бы что-то в этом роде? Я знаю, что это не будет Int, но что бы это было? –
Вы можете сохранить дату как int (например, в юлианский день); с ним проще работать, если вы используете 'LocalDate'. –