Мое заявление требует следующего.
В моем приложении (в стойках) нам нужна поддержка персидского календаря.
Когда мы отправляем форму, дата становится строкой в классе Action. Нам нужно сохранить эту дату в персидском формате в БД. Мы настроили БД для персидского календаря. И при получении данных из БД пользователь должен иметь возможность видеть дату только в персидском формате.
Также пользователь может переключаться на 2 языка (английский, персидский). Итак, приложение должно поддерживать оба типа календарей (григорианский и персидский). Если пользователь вошел в систему на английском языке, григорианский календарь должен быть виден. Если пользователь вошел в систему на персидском языке, то должен быть виден персидский календарь.
Для преобразования даты с григорианского на персидский я использую ниже:
http://www.dailyfreecode.com/forum/converter-gregorian-date-jalali-date-20288.aspx
В приведенном выше требовании я сталкиваюсь с двумя проблемами:
- При отправке формы, как мы можем сохранить дату (в формате String в классе Action) в персидском формате в БД?
- При получении данных из БД они должны быть в персидском формате. На данный момент клиент JDBC получает дату в григорианском календаре.
Я передаю java.sql.Date (сегодняшнюю дату), которая сохраняется в персидском формате в БД. Используя код ниже.
java.sql.Date sqlDate = null;
java.util.Date utilDate = new Date();
sqlDate = new java.sql.Date(utilDate.getTime());
PreparedStatement psmtInsert = conn.prepareStatement(insertQuery);
psmtInsert.setDate(1, sqlDate));
psmtInsert.executeUpdate();
Для получения:
PreparedStatement psmtSelect = conn.prepareStatement("select dateOfJoining from EMPLOYEE");
ResultSet resultSet = psmtSelect.executeQuery();
while (resultSet.next()) {
System.out.println(resultSet.getDate(1));
}
Но это возвращаемая дата по григорианскому типу.
Есть ли у нас какие-либо настройки в клиенте Tomcat / JVM / JDBC, которые преобразуют дату, возвращаемую из БД, в сам персидский формат (например, у нас есть NLS_CALENDAR, NLS_DATE_FORMAT в Oracle)?
Для 1-го выпуска, если я передаю дату в персидском формате, то в БД она сохраняется неправильно. PFB мой код:
java.sql.Date sqlDate = null;
java.util.Date utilDate = new Date("1397/02/04");
sqlDate = new java.sql.Date(utilDate.getTime());
PreparedStatement psmtInsert = conn.prepareStatement(insertQuery);
psmtInsert.setDate(1, sqlDate));
psmtInsert.executeUpdate();
Выше вставляется как 0777/09/13 в БД.
Как мы можем преодолеть вышеуказанные проблемы?
Заранее спасибо.