你的位置:首页 > Java教程

[Java教程]Java 本地时间与UTC时间转换


UTC时间:通用协调时(Universal Time Coordinated),与格林尼治平均时(GMT,Greenwich Mean Time)一样,都是与英国伦敦的本地时相同。

import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.TimeZone;public class GetUTCTime {  // 取得本地时间:  private Calendar cal = Calendar.getInstance();  // 取得时间偏移量:  private int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);  // 取得夏令时差:  private int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);  public static void main(String[] args) {    GetUTCTime gc = new GetUTCTime();    long mill = gc.getUTCTimeStr();    gc.setUTCTime(mill);  }  public long getUTCTimeStr() {    System.out.println("local millis = " + cal.getTimeInMillis()); // 等效System.currentTimeMillis() , 统一值,不分时区    // 从本地时间里扣除这些差量,即可以取得UTC时间:    cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));    long mills = cal.getTimeInMillis();    System.out.println("UTC = " + mills);    return mills;  }  public void setUTCTime(long millis) {    cal.setTimeInMillis(millis);    SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    String time = foo.format(cal.getTime());    System.out.println("GMT time= " + time);    // 从本地时间里扣除这些差量,即可以取得UTC时间:    cal.add(java.util.Calendar.MILLISECOND, (zoneOffset + dstOffset));    time = foo.format(cal.getTime());    System.out.println("Local time = " + time);  }  public void getGMTTime() {    //mothed 2    TimeZone gmtTime = TimeZone.getTimeZone("GMT");    Date date = new Date();    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    format.setTimeZone(gmtTime);    System.out.println("GMT Time: " + format.format(date));        //method 2    Calendar calendar1 = Calendar.getInstance();    calendar1.setTimeZone(gmtTime);    //System.out.println(calendar1.getTime());  //时区无效    //System.out.println(calendar1.getTimeInMillis()); //时区无效    System.out.println("GMT hour = " + calendar1.get(Calendar.HOUR));  }}