2016-03-31 7 views
0

В настоящее время я делаю приложение на Android, где пользователь зарегистрирует свои данные.Какой тип данных Java будет Дата рождения?

В моей базе данных У DOB как тип Date.

Могу ли я объявить DOB на Java как String? Double? Int? Я смущен, как я это сделаю, чтобы он соответствовал формату даты базы данных.

Любая помощь будет отличной!

+0

Обычно можно было бы сохранить дату рождения как объект даты. Но это зависит от приложения и базовой базы данных. Можете ли вы предоставить дополнительную информацию? – jojonas

+0

Ну в базе данных пользователи даты рождения будут храниться как тип «DATE», поэтому в моей программе Java, когда я объявляю объекты: 'public class User { Строка firstName, lastName, email, school, sType, пароль; int dob; ' было бы что-то в этом роде? Я знаю, что это не будет Int, но что бы это было? –

+0

Вы можете сохранить дату как int (например, в юлианский день); с ним проще работать, если вы используете 'LocalDate'. –

ответ

8

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).

+0

Итак, как только я импортирую 'java.time.LocalDate', как его реализовать, чтобы пользователь, использующий приложение, мог ввести свои данные о рождении, если я объявил DOB как' int dob', как я могу сделать (2016, 3, 31), приемлемый как int? –

+0

Ну, я советую вам хранить его как «LocalDate», а не 'int'. Но если вам нужно сохранить его как 'int' (который возвращается к вопросу о том, что означает дата« 1459438541000 »), вы можете сохранить его как число дней после заданной даты, например. юлианская дата. –

+1

* Сообщаю, что вы * представляете его в своем Java-коде * как 'LocalDate'. Вы можете сохранить его, но это удобно. –