我在redhat linux服务器运行以下java代码:
SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd") ;
GregorianCalendar gc = new GregorianCalendar();
TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
gc.setTimeZone(tz);
gc.add(Calendar.DAY_OF_MONTH,-1);
String date = sdf.format(gc.getTime());
System.out.println("date :" + date);在下午16点以前date的值前天的时间, 在16点以后date的值却是昨天的时间. 所以我怀疑是系统的时区问题,我查看了系统时区,-/etc/sysconfig/clock- ZONE="Asia/Shanghai" 也就是说是东8区的时间, 但为什么我程序运行拿到的却是西8区时间(比正常北京时间晚16小时)???
是系统时间问题,还是我的程序问题?? 如下的程序也是一样,和上面的结果没有区别,
SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd") ;
Calendar gc = Calendar.getInstance();
gc.add(Calendar.DAY_OF_MONTH,-1);
String date = sdf.format(gc.getTime());
System.out.println("date :" + date);而在 weblogic 起动时, weblogic输出的时间却是对的
SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd") ;
GregorianCalendar gc = new GregorianCalendar();
TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
gc.setTimeZone(tz);
gc.add(Calendar.DAY_OF_MONTH,-1);
String date = sdf.format(gc.getTime());
System.out.println("date :" + date);在下午16点以前date的值前天的时间, 在16点以后date的值却是昨天的时间. 所以我怀疑是系统的时区问题,我查看了系统时区,-/etc/sysconfig/clock- ZONE="Asia/Shanghai" 也就是说是东8区的时间, 但为什么我程序运行拿到的却是西8区时间(比正常北京时间晚16小时)???
是系统时间问题,还是我的程序问题?? 如下的程序也是一样,和上面的结果没有区别,
SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd") ;
Calendar gc = Calendar.getInstance();
gc.add(Calendar.DAY_OF_MONTH,-1);
String date = sdf.format(gc.getTime());
System.out.println("date :" + date);而在 weblogic 起动时, weblogic输出的时间却是对的
也是 setTimeZone方法