数据库有一个UTC 时间为2012-07-12T03:00:00.000Z的记录
现在以不同的session timezone去读取这个记录,获得它的Date日期
那么这些Date的fasttime应该是一样的吧?因为他们都是从同一个记录取出来的。
但结果却不一样:
PreparedStatement pst = null;
pst = con.prepareStatement(sql);
((OracleConnection)con).setSessionTimeZone("America/Dawson");
rs = pst.executeQuery();
rs.next();
Date d1 = rs.getDate(1);
System.out.println(d.getTime());
日期 session时区 时区偏移 fastTime值
2012-07-11T20:00:00.000Z America/Dawson -7 1342036800000
2012-07-12T03:00:00.000Z GMT 0 1342062000000奇怪了,这两个时间实际上同一天在不同时区的显示,为什么fastTime也不一样?
这样的话,对于不同时区的时间,怎么比较它们的先后?
现在以不同的session timezone去读取这个记录,获得它的Date日期
那么这些Date的fasttime应该是一样的吧?因为他们都是从同一个记录取出来的。
但结果却不一样:
PreparedStatement pst = null;
pst = con.prepareStatement(sql);
((OracleConnection)con).setSessionTimeZone("America/Dawson");
rs = pst.executeQuery();
rs.next();
Date d1 = rs.getDate(1);
System.out.println(d.getTime());
日期 session时区 时区偏移 fastTime值
2012-07-11T20:00:00.000Z America/Dawson -7 1342036800000
2012-07-12T03:00:00.000Z GMT 0 1342062000000奇怪了,这两个时间实际上同一天在不同时区的显示,为什么fastTime也不一样?
这样的话,对于不同时区的时间,怎么比较它们的先后?
JAVA的日期比较函数都是使用 fastTime 这个属性的。但是这个属性貌似自对象被实例化之后,就不会变了。下面我将某一个DATA类型的时分秒置空之后,对应的fasttime还是不会变。
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.clear(Calendar.HOUR);
calendar.clear(Calendar.MINUTE);
calendar.clear(Calendar.SECOND);
我刚才是不是理解错了,难道你在数据库表中直接有个列就是fastTime的值(你录入时就不变了),是这个意思?