在java中将本地时区转换为GMT

时间:2010-01-13 08:46:23

标签: java timezone

我尝试将当地时区的转换日期转换为GMT,我做了类似的事情

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        String gmtStrDate = sdf.format(Calendar.getInstance().getTime());

        System.out.println("GMT 1"+gmtStrDate);

        Date gmtDate = sdf.parse(gmtStrDate);

        System.out.println("GMT 2"+gmtDate);

格林威治标准时间格林威治标准时间格林威治标准时间为1 o / p但是GMT 2 o / p再次变为当地时区...可以告诉我为什么?

在GMT中获得GMT 2 o / p我确实喜欢这样:

日历日历= Calendar.getInstance(TimeZone.getTimeZone(“GMT”));             calendar.setTime(GMTDATE);

        System.out.println("GMT 3 = "+calendar.getTime());

但GMT 3o / p仍在本地tz。请在此建议。

3 个答案:

答案 0 :(得分:15)

import java.util.*;
import java.text.*;
public class CurrentTimeToGMT{
  public static void main(String args[]){
    Date date = new Date();
    DateFormat gmtFormat = new SimpleDateFormat();
    TimeZone gmtTime = TimeZone.getTimeZone("GMT");
    gmtFormat.setTimeZone(gmtTime);
    System.out.println("Current Time: "+date);
    System.out.println("GMT Time: " + gmtFormat.format(date));

  }
}

<强>输出

Current Time: Wed Mar 10 11:21:18 IST 2010

GMT Time: 3/10/10 5:51 AM

答案 1 :(得分:2)

在“解析”之后,您必须在打印前再次格式化,例如:

System.out.println("GMT 2"+sdf.format(gmtDate));

修改 原因是您的gmtStrDate不存储任何时区信息

答案 2 :(得分:0)

您可以使用此功能执行此操作,例如您要将本地时间转换为格林尼治标准时间,也就是格林尼治标准时间+6或格林尼治标准时间+5 然后只需使用此功能。该函数将返回答案。

public String getCurrentDate() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd hh:mm a zzz");
    Date date = new Date();
    sdf.setTimeZone(TimeZone.getTimeZone("GMT+6:00"));
    return sdf.format(date);
 }