getTimeInMillis() Calendar TimeZone

来源:百度知道 编辑:UC知道 时间:2024/07/07 03:57:22
Calendar cChina = new GregorianCalendar(TimeZone.getTimeZone("China"));
Calendar cJapan = new GregorianCalendar(TimeZone.getTimeZone("Japan"));
System.out.println(cChina.getTimeInMillis());
System.out.println(cJapan.getTimeInMillis());
***返回毫秒数经过几十次运行,只有大概5次返回结果不一样,剩下一样。***
***既然时区不同,为什么毫秒数一样?(换其他时区效果一样)
System.out.println(cChina.get(Calendar.HOUR_OF_DAY));
System.out.println(cJapan.get(Calendar.HOUR_OF_DAY));
***这样每次就不同了,经过几次测试差一小时***
Calendar cJapan = new GregorianCalendar(TimeZone.getTimeZone("Japan"));
Timestamp tJapan = new Timestamp(cJapan.getTimeInMillis());
String sql = "insert into message values (null, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setTimestamp(1, tJapan);
pstmt.executeUpdate();
***插进数据库的依然是我本地时间***
谢谢hyj_zhl
不过Timestamp的构造方法只有Timestamp(long l)只能是毫秒数,cJapan.get(Calendar.HOUR_OF_DAY)这个返回的是个int的小时数

粗略看了一下,既然你都通过实验知道
cJapan.get(Calendar.HOUR_OF_DAY)才能得到时区时间,
为什么你还用这个?:::
Timestamp tJapan = new Timestamp(cJapan.getTimeInMillis());
建议:改为Timestamp tJapan=new Timestamp(cJapan.get(Calendar.HOUR_OF_DAY));试试看,不行咱们再看看!