我尝试将日期值设置为具有默认值的 PreparedStatement,但该值有时会作为 JulianValue 返回。例如(假设 spanBegin 和 spanEnd 为空)
Calendar cal = new GregorianCalendar();
if (spanBegin == null) {
cal.set(0000, Calendar.JANUARY, 1);
spanBegin = cal.getTime();
}
if (spanEnd == null)
{
cal.set(9999, Calendar.DECEMBER, 31);
spanEnd = cal.getTime();
}
在第 3 行,由于日期 0000 年 1 月 1 日由儒略历限定,因此 CDate 变为儒略历。但是,下一个 Date 即使是在 9999 年,它的 CDate 仍然是儒略历。我不得不创建另一个公历实例来解决这个问题。
Calendar cal = new GregorianCalendar();
if (spanBegin == null) {
cal.set(0000, Calendar.JANUARY, 1);
spanBegin = cal.getTime();
}
Calendar cal = new GregorianCalendar();
if (spanEnd == null)
{
cal.set(9999, Calendar.DECEMBER, 31);
spanEnd = cal.getTime();
}
问题是,这是日期对象的预期行为还是错误?实际上使用 GregorianCalendar.getInstance() 表明 cdate 有时设置为 JulianCalendar。