有两个不同时区的Calendar对象,如何计算它们之间的时间差。 如题,有两个不同时区的Calendar对象,如何计算它们之间的时间差。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如何求两个不同时区的Calendar对象间的时间差啊? 例如: Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT")); Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("JST"));这两个cal1和cal2间的时间差如何计算啊?我使用如下的方法返回的是0。long dif = cal2.getTimeInMillis() - cal1.getTimeInMillis(); 实在不好意思,你看这样可以吗imeZone tzg=TimeZone.getTimeZone("GMT"); TimeZone tzgf=TimeZone.getDefault();//CST DateFormat dateFormatter = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL, Locale.CHINA); DateFormat dateFormatterc = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL, Locale.CHINA); Date curDate = new Date(); dateFormatter.setTimeZone(tzg); dateFormatterc.setTimeZone(tzgf); System.out.println(tzgf.getRawOffset()-tzg.getRawOffset()); System.out.println(dateFormatterc.format(curDate)); System.out.println(dateFormatter.format(curDate)); 晕:少了个T TimeZone tzg=TimeZone.getTimeZone("GMT"); TimeZone tzgf=TimeZone.getDefault(); DateFormat dateFormatter = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL, Locale.CHINA); DateFormat dateFormatterc = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL, Locale.CHINA); Date curDate = new Date(); dateFormatter.setTimeZone(tzg); dateFormatterc.setTimeZone(tzgf); System.out.println(tzgf.getRawOffset()-tzg.getRawOffset()); System.out.println(dateFormatterc.format(curDate)); System.out.println(dateFormatter.format(curDate)); 我自己作了一个方法如下:long get_CalendarDif(Calendar cal){ int cal_Y = 0; int cal_M = 0; int cal_D = 0; int cal_h = 0; int cal_m = 0; int cal_s = 0; TimeZone tz = TimeZone.getDefault(); Calendar loc_cal = Calendar.getInstance(); TimeZone.setDefault(cal.getTimeZone()); cal_Y = cal.get(Calendar.YEAR); cal_M = cal.get(Calendar.MONTH); cal_D = cal.get(Calendar.DATE); cal_h = cal.get(Calendar.HOUR_OF_DAY); cal_m = cal.get(Calendar.MINUTE); cal_s = cal.get(Calendar.SECOND); TimeZone.setDefault(tz); Calendar tmp_cal = Calendar.getInstance(); tmp_cal.set(cal_Y,cal_M,cal_D,cal_h,cal_m,cal_s); return tmp_cal.getTimeInMillis() - loc_cal.getTimeInMillis(); } long dif = cal2.getTimeInMillis() - cal1.getTimeInMillis();请问楼主 这个为什么等于0 JDBC访问数据库出现的异常 java执行cmd命令的基础问题 如何用变量接收bean:write的输出结果啊? 请教 如何在java文件中调用批处理文件?高分相送 错在哪里? 如何用JAVA调用WIN32API,解决后马上给分 新手请教:LINUX下JDK的问题 如何在虚拟机栈中出现OOM异常 ArrayList与LinkedList 代码运行时 设置的键盘不起作用 何时分配内存???
例如:
Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("JST"));这两个cal1和cal2间的时间差如何计算啊?我使用如下的方法返回的是0。
long dif = cal2.getTimeInMillis() - cal1.getTimeInMillis();
imeZone tzg=TimeZone.getTimeZone("GMT");
TimeZone tzgf=TimeZone.getDefault();//CST
DateFormat dateFormatter = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
Locale.CHINA);
DateFormat dateFormatterc = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
Locale.CHINA);
Date curDate = new Date();
dateFormatter.setTimeZone(tzg);
dateFormatterc.setTimeZone(tzgf);
System.out.println(tzgf.getRawOffset()-tzg.getRawOffset());
System.out.println(dateFormatterc.format(curDate));
System.out.println(dateFormatter.format(curDate));
TimeZone tzgf=TimeZone.getDefault();
DateFormat dateFormatter = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
Locale.CHINA);
DateFormat dateFormatterc = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
Locale.CHINA);
Date curDate = new Date();
dateFormatter.setTimeZone(tzg);
dateFormatterc.setTimeZone(tzgf);
System.out.println(tzgf.getRawOffset()-tzg.getRawOffset());
System.out.println(dateFormatterc.format(curDate));
System.out.println(dateFormatter.format(curDate));
long get_CalendarDif(Calendar cal){
int cal_Y = 0;
int cal_M = 0;
int cal_D = 0;
int cal_h = 0;
int cal_m = 0;
int cal_s = 0;
TimeZone tz = TimeZone.getDefault();
Calendar loc_cal = Calendar.getInstance();
TimeZone.setDefault(cal.getTimeZone());
cal_Y = cal.get(Calendar.YEAR);
cal_M = cal.get(Calendar.MONTH);
cal_D = cal.get(Calendar.DATE);
cal_h = cal.get(Calendar.HOUR_OF_DAY);
cal_m = cal.get(Calendar.MINUTE);
cal_s = cal.get(Calendar.SECOND);
TimeZone.setDefault(tz);
Calendar tmp_cal = Calendar.getInstance();
tmp_cal.set(cal_Y,cal_M,cal_D,cal_h,cal_m,cal_s);
return tmp_cal.getTimeInMillis() - loc_cal.getTimeInMillis();
}
请问楼主 这个为什么等于0