Как создать новый объект Date без параметра year в Java? - PullRequest
7 голосов
/ 28 апреля 2019

Я пытаюсь использовать новый SimpleDateFormat для разбора строки в формате dd-MM.По сути, я хочу создать объект date из строки и сохранить его в базе данных.

Когда я проверяю запись в базе данных, я вижу, что она добавляет 1970 к столбцу year.Я считаю, что это значение по умолчанию для года, когда оно пустое.Есть ли способ предотвратить значение года.Я не хочу хранить информацию о году.

Мой код -

String dateOfBirth = "14-Feb";
dbObject.save(new SimpleDateFormat("dd-MMM").parse(dateOfBirth));

Для простоты предположим, что dbObject.save() метод ожидает предоставления объекта даты.Я не хочу создавать ценную дату - 14 февраля 1970 года, вместо этого она должна быть только 14 февраля.

1 Ответ

5 голосов
/ 28 апреля 2019

Я настоятельно рекомендую вам использовать класс java.time.MonthDay для хранения ваших дат. Если ваша база данных не поддерживает ее сохранение, вы можете просто сохранить ее в виде строки и parse, когда получите ее из базы данных.

Вот как бы вы проанализировали свою дату:

MonthDay md = MonthDay.parse("14-Feb", DateTimeFormatter.ofPattern("dd-MMM").withLocale(Locale.US));

Затем вы можете сохранить строку, возвращенную .toString, в базу данных (это будет что-то вроде --02-14), и в следующий раз, когда вы parse сделаете это, вам не нужен форматер даты и времени:

MonthDay md = MonthDay.parse("--02-14");
...