关于java:如何将本地日期转换为GMT

How to convert a local date to GMT

本问题已经有最佳答案,请猛点这里访问。
1
2
3
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
java.util.Date fromDate = cal.getTime();
System.out.println(fromDate);

上面的代码不会在GMT中打印日期,而是在本地时区打印。 如何从当前日期获得GMT等效日期(假设该程序可以在日本或SFO运行)


这个怎么样 -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) throws IOException {
    Test test=new Test();
    Date fromDate = Calendar.getInstance().getTime();
    System.out.println("UTC Time -"+fromDate);
    System.out.println("GMT Time -"+test.cvtToGmt(fromDate));
}
private  Date cvtToGmt( Date date ){
    TimeZone tz = TimeZone.getDefault();
    Date ret = new Date( date.getTime() - tz.getRawOffset() );

    // if we are now in DST, back off by the delta.  Note that we are checking the GMT date, this is the KEY.
    if ( tz.inDaylightTime( ret )){
        Date dstDate = new Date( ret.getTime() - tz.getDSTSavings() );

        // check to make sure we have not crossed back into standard time
        // this happens when we are on the cusp of DST (7pm the day before the change for PDT)
        if ( tz.inDaylightTime( dstDate )){
            ret = dstDate;
        }
     }
     return ret;
}

测试结果:
UTC时间 - 5月15日星期二16:24:14 IST 2012
GMT Time - Tue May 15 10:54:14 IST 2012


1
2
3
4
DateFormat gmtFormat = new SimpleDateFormat();
TimeZone gmtTime = TimeZone.getTimeZone("GMT");
gmtFormat.setTimeZone(gmtTime);
System.out.println("Current DateTime in GMT :" + gmtFormat.format(new Date()));

更一般地说,您可以通过这种方式转换为任何(有效)时区

看到

  • DateFormat


喜欢这个SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));