`
flyfox1982
  • 浏览: 78430 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java时区处理

 
阅读更多


通用协调时(UTC, Universal Time Coordinated),格林尼治平均时(GMT, Greenwich Mean Time) 由于历史原因,这两个时间是一样的。
北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。
转换中,最重要的公式就是:
UTC + 时区差 = 本地时间
publicstaticCalendarconvertToGmt(Calendarcal){
Datedate=cal.getTime();
TimeZonetz=cal.getTimeZone();

System.out.println("inputcalendarhasdate["+date+"]");

//ReturnsthenumberofmillisecondssinceJanuary1,1970,00:00:00 GMT
longmsFromEpochGmt=date.getTime();

//givesyouthecurrentoffsetinmsfromGMTatthecurrentdate
intoffsetFromUTC=tz.getOffset(msFromEpochGmt);
System.out.println("offsetis"+offsetFromUTC);

//createanewcalendarinGMTtimezone,settothisdateandaddthe offset
CalendargmtCal=Calendar.getInstance(TimeZone.getTimeZone("GMT"));
CalendarutcCal=Calendar.getInstance(TimeZone.getTimeZone("UTC"));

gmtCal.setTime(date);
//根据东西时区,选择offsetFromUTC为正或负数
gmtCal.add(Calendar.MILLISECOND,offsetFromUTC);

utcCal.setTime(date);
utcCal.add(Calendar.MILLISECOND,offsetFromUTC);

System.out.println("CreatedGMTcalwithdate["+gmtCal.getTime()
+"=="+utcCal.getTime()+"]");
returngmtCal;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics