#java #jpa #date #calendar #format
#java #jpa #Дата #Календарь #формат
Вопрос:
У меня проблема с использованием атрибутивного календаря с JPA:
@Column(name = "Date")
@Temporal(TemporalType.DATE)
private Calendar date;
По умолчанию он задан как мм / дд / гггг, а мне это нужно в формате дд / мм / гггг,
кто-нибудь может мне помочь?
Я видел, что это довольно просто с датой вместо календаря, но я не могу ее использовать…
Спасибо Даниэле
Комментарии:
1. Я думаю, вам понадобится пользовательский тип пользователя
Ответ №1:
Я думаю, формат на самом деле не имеет значения. Ни у Calendar
, ни у Date
них нет никакого формата. Это toString()
метод, который форматирует его в формат по умолчанию.
Не могли бы вы уточнить,
- каково ожидаемое поведение?
- что вы получаете?
[Отредактировано на основе комментария ниже]
Что бы ни исходило из браузера, оно приходит как String
. Итак, у вас возникла проблема при преобразовании этого String
в Date
или Calendar
. Исправьте это, и после этого все будет хорошо.
Удачного кодирования. Приветствия.
Комментарии:
1. В основном поведение заключается в том, что когда мы вводим дату через JSP, она вставляется в базу данных с неправильным форматом даты, например, если мы вводим 1/2/2010, результатом будет 2 января, и, например, если я использую 13/09/2010, это становится 9 января «2011»… в базе данных это выглядит так: 2012-01-09
2. Что бы ни исходило из браузера, это строка. Итак, у вас возникла проблема при преобразовании этой строки в дату. Исправьте это. После этого все будет хорошо. Удачного кодирования. 😉
Ответ №2:
Я полагаю, что это не проблема JPA, а конфигурация SQL.
Из того, что вы описываете, ваш SQL server настроен на формат по умолчанию. Вы должны изменить его на нужный вам формат.
Взгляните на форматы даты SQL — http://www.sql-server-helper.com/tips/date-formats.aspx
Комментарии:
1. я не думаю, что это проблема MySQL, даже потому, что в самой БД она хранится в третьем формате (гггг-мм-дд)
2. 2-й вариант — настройки часового пояса JVM
Ответ №3:
Если это так, почему бы и нет, вы можете попробовать SimpleDateFormatter, где вы можете проанализировать дату и с помощью DateFormatter получить желаемый формат даты.Для получения дополнительных разъяснений, пожалуйста, попробуйте ссылку.
Комментарии:
1. проблема в том, что я не могу изменить модель, таким образом, я должен продолжать работать с Calendar вместо Date
Ответ №4:
Попробуйте следующее и дайте нам знать:
String formattedDate = "";
String requiredFormat = "MM/dd/yyyy";
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date dt = formatter.parse("13/09/2011");
DateFormat reqFormatter = new SimpleDateFormat(requiredFormat, Locale.ENGLISH);
formattedDate = reqFormatter.format(dt);
System.out.println("Output Date: " formattedDate);
//formatted Date даст вам то, что ожидается в DB.