Проблема с форматом даты с использованием атрибутивного календаря с JPA

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