我的应用程序需要以下内容。
在我的应用程序中(在 struts 中),我们需要支持波斯日历。
当我们提交表单时,日期在 Action 类中以 String 的形式出现。我们需要将此日期以波斯格式保存在数据库中。我们已经为波斯日历配置了数据库。在从数据库用户检索数据时,应该只能看到波斯格式的日期。
此外,用户可以切换 2 种语言(英语、波斯语)。所以,应用程序应该支持两种类型的日历(公历和波斯)。如果用户用英语登录,公历应该是可见的。如果用户以波斯语登录,那么波斯日历应该是可见的。
对于从公历到波斯的日期转换,我在下面使用: http ://www.dailyfreecode.com/forum/converter-gregorian-date-jalali-date-20288.aspx
在上述要求中,我面临两个问题:
- 提交表单时,我们如何在数据库中以波斯格式保存日期(在 Action 类中为 String 格式)?
- 从数据库中检索数据时,它应该采用波斯格式。截至目前,JDBC 客户端正在检索公历日历中的日期。
我正在传递 java.sql.Date(today's 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 客户端中是否有任何设置可以将从数据库返回的日期转换为波斯格式本身(就像我们在 Oracle 中有 NLS_CALENDAR ,NLS_DATE_FORMAT 一样)?
对于第一个问题,如果我以波斯格式传递日期,那么在 DB 中它保存不正确。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();
以上是在 DB 中插入为 0777/09/13。
我们如何才能克服上述问题?提前致谢。