今天需要用日期转换成秒然后去库里查对应时间段内的数据。结果和小伙伴的结果死活对不上。
时间转换代码如下
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1=sdf1.parse("2016-04-06 15:48:32");
Calendar cl=Calendar.getInstance();
cl.setTime(d1);
System.out.println(Long.toString(cl.getTimeInMillis()/1000));
这个打印出来的就是我要的时间了。
我和小伙伴的时间整整差了半天,没办法,查吧。
于是乎,对代码,对Java版本,对工具版本,对系统版本。一通查下来都是一样。
又整了段从秒转日期的代码试图证明到底是谁错了。
long time=1459928912;
Date date = new Date(time*1000);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(date);
System.out.println(dateStr);
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(1459972112L * 1000);
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(gc.getTime()));
long sd=1459928912L*1000;
Date dat=new Date(sd);
GregorianCalendar gc1 = new GregorianCalendar();
gc.setTime(dat);
java.text.SimpleDateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s=format1.format(gc.getTime());
System.out.println(s);
结果我电脑运行结果显示我的是对的,他电脑上结果显示他是对的。
那么问题来了,为毛会差了半天??
疑惑2人组再次开始各种对照,试图找出不同。
终于,发现了问题所在,我的系统时区设置的是北京时间,小伙伴的是美帝的波士顿时间。时差正好12小时。
调整时区后终于一致了。。。。。