gpt4 book ai didi

java - 波斯日历 - 从 Oracle DB 插入和检索波斯格式的日期

转载 作者:行者123 更新时间:2023-11-30 06:12:04 27 4
gpt4 key购买 nike

我的申请需要以下内容。

在我的应用程序(在struts中)中,我们需要支持波斯历。

当我们提交表单时,日期以 Action 类中的字符串形式出现。我们需要将此日期以波斯格式保存在数据库中。我们已经为波斯日历配置了数据库。从数据库检索数据时,用户应该只能看到波斯格式的日期。

此外,用户可以切换两种语言(英语、波斯语)。因此,应用程序应该支持两种类型的日历(公历和波斯历)。如果用户以英语登录,则应该可以看到公历。如果用户使用波斯语登录,则应该可以看到波斯日历。

对于从公历到波斯语的日期转换,我使用以下命令: http://www.dailyfreecode.com/forum/converter-gregorian-date-jalali-date-20288.aspx

在上述要求中,我面临两个问题:

  1. 提交表单时,如何将日期(Action类中的字符串格式)以波斯语格式保存到数据库中?
  2. 从数据库检索数据时,数据应采用波斯格式。截至目前,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 客户端中是否有任何设置将从数据库返回的日期转换为波斯格式本身(就像 Oracle 中的 NLS_CALENDAR 、NLS_DATE_FORMAT 一样)?

对于第一个问题,如果我以波斯格式传递日期,那么在数据库中它保存不正确。 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。

如何克服上述问题?提前致谢。

最佳答案

java.sql.Date 中没有日历类型,因此不可能将其强制为波斯语。 JDBC 中的所有日期/时间值均以中性形式标准化,Oracle 数据库也使用中性形式进行存储和处理。当 NLS_CALENDAR 为 PERSIAN 时,Oracle 会在值与中性形式之间进行转换,并且它只是以波斯日历约定“呈现”它,同时在内部以中性形式进行处理。

通常,最好对后端的所有值一致使用中性形式。通常,转换器在 UI 层中用作本地化的一部分,以适应各个用户的首选区域设置。如果中间层需要 Java 本地化,Douglas 上面建议的 java.time.chrono 包将是一个干净的解决方案。

关于java - 波斯日历 - 从 Oracle DB 插入和检索波斯格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50022995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com