有Java代码,它在2个不同的环境中运行,并将JdbcTemplate
的记录插入 DB 。
两种环境的运行结果都不同。特别是对于Date
字段。
在第一个环境(Oracle XE)上,它会生成记录:
"12/03/2010";191094;"71697211000";3229;880323202;NULL;0;1;0;NULL;0;NULL
第二环境(Oracle非XE):
"12/03/2010 12:00:00";191094;"71697211000";3229;880323202;NULL;0;1;0;NULL;0;NULL
NLS_DATE_FORMAT (如果它至关重要)第一个env是DD-MON-RR
,
对于第二个环境是DD-MON-RRRR
问题是,Oracle设置可能会影响什么,第二个env Date格式是另一个?
答案 0 :(得分:27)
应在Java代码中设置以下Calendar属性:
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);
答案 1 :(得分:4)
根据the documentation,HH
指的是12小时的时间。你正在检索的12个是午夜12点。你想要的是HH24
,这是一个24小时的时间,从00开始到午夜。
答案 2 :(得分:3)
如果您不想显示时间部分,请不要包含包含时间部分的格式字符串(“HH:MI:SS”)。
您已将时间部分重置为午夜,基本上......无法区分Calendar
或Date
设置为正好午夜和Calendar
或{{1 “没有”时间部分 - 因为没有Date
/ Calendar
这样的概念,只有一个日期部分。
现在,您可以在数据库中拥有该功能,具体取决于您可以使用的类型 - 但Date
和java.util.Date
始终代表时间点,而不仅仅是日期。
它显示12而不是00的原因是因为你使用的是“HH”而不是“HH24”,根据lacqui的回答。我假设你真的不想看到时间,因为你已经将它重置为午夜......
答案 3 :(得分:2)
我建议你像这样扩展一个Calendar类:
public class CalendarDateOnly extends GregorianCalendar {
public static Calendar getInstance() {
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));
return cal;
}
}
以这种方式实例化:
Calendar june30 = CalendarDateOnly.getInstance();
june30.set(2000, Calendar.JUNE, 30);
答案 4 :(得分:1)
/*
* Date : 2015-07-09
* Author : Bhuwan Prasad Upadhyay
*/
package com.developerbhuwan.date.utils;
import java.util.Calendar;
import java.util.Date;
/**
*
* @author developerbhuwan
*/
public class CalenderUtils {
public static Calendar getNewCalendarInstance() {
Calendar calendar = Calendar.getInstance();
return resetCalender(calendar);
}
public static Date resetDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return resetCalender(calendar).getTime();
}
public static Calendar resetCalender(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar;
}
public static void setTimeInCalendar(Calendar calendar, Date date) {
calendar.setTime(resetDate(date));
}
}