在 Java 中重置日历实例的时间部分

2022-09-04 05:45:52

有Java代码,它在2个不同的环境中运行,并将记录插入到数据库JdbcTemplate

对于两个 env,其运行结果不同。特别是对于字段。Date

在第一个环境(Oracle XE)上,它生成记录:

"12/03/2010";191094;"71697211000";3229;880323202;NULL;0;1;0;NULL;0;NULL

第二个环境(Oracle non XE):

"12/03/2010 12:00:00";191094;"71697211000";3229;880323202;NULL;0;1;0;NULL;0;NULL

NLS_DATE_FORMAT(如果它是关键的)对于第一个环境是,对于第二个环境是DD-MON-RRDD-MON-RRRR

问题是,Oracle设置可能会影响哪些内容,第二个 env Date 格式是另一个?


答案 1

应该在 Java 代码中设置以下日历属性:

  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY));
  cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE));
  cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND));
  cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND));

而不是:

  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.HOUR_OF_DAY, 0);
  cal.set(Calendar.MINUTE, 0);
  cal.set(Calendar.SECOND, 0);
  cal.set(Calendar.MILLISECOND, 0);

答案 2

根据文档,指的是12小时的时间。您检索的时间中的 12 是午夜 12 点。你想要的是,这是一个24小时的时间,从00开始午夜。HHHH24