将给定时间转换为GMT

时间:2011-07-19 15:05:41

标签: java date simpledateformat

我曾尝试将指定日期Mon Jul 04 00:00:00 IST 2011转换为GMT,如下所示:2011-07-04 18:10:47 GMT+00:00 2011但显示3/7/11 6:30 PM

这是我的代码:

java.text.SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java.text.SimpleDateFormat res_format = new SimpleDateFormat("dd/mm/yyyy HH:mm");

java.util.Date date1 = format.parse("2011-07-04 00:00:00");

DateFormat gmtFormat = new SimpleDateFormat();

TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");

gmtFormat.setTimeZone(gmtTime);

System.out.println("Current Time: "+date1);

System.out.println("Time:"+gmtFormat.format(date1));

3 个答案:

答案 0 :(得分:2)

这对我有用:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

public class TZ {

    public static void main(String[] args) throws ParseException {
    java.text.SimpleDateFormat sourceFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy");

    java.text.SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss zzzz");

    java.util.Date date1 = sourceFormat.parse("Mon Jul 04 00:00:00 IST 2011");

    TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");

    gmtFormat.setTimeZone(gmtTime);

    System.out.println("Source date: " + date1);

    System.out.println("gmt:" + gmtFormat.format(date1));

    }
}

答案 1 :(得分:0)

代码更改最少的快速解决方案是替换:

DateFormat gmtFormat = new SimpleDateFormat();

要:

SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");

答案 2 :(得分:0)

你的想法是正确的。如果你再费心去查看代码,你就会知道你做错了什么。

您的代码运行正常。但是你没有看到你想要的东西,因为你(最有可能)初始化了

java.text.SimpleDateFormat res_format = new SimpleDateFormat("dd/mm/yyyy HH:mm");

输出

并且您使用全新的SimpleDateFormat,突然设置时区并显示。

如果你改变了

DateFormat gmtFormat = new SimpleDateFormat();

java.text.SimpleDateFormat gmtFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm zz");

你得到了你想要的东西。

(请注意格式的变化。它是dd/MM/yyyy而不是dd/mm/yyyy

如果您对块进行了逻辑分组,并且没有为(几乎)所有类使用完全限定名称,那么您的代码(对您和其他人)将更容易阅读

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = format.parse("2011-07-04 00:00:00");

    SimpleDateFormat gmtFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm zz");
    TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");
    gmtFormat.setTimeZone(gmtTime);

    System.out.println("Current Time: " + date);

    System.out.println("Time:" + gmtFormat.format(date));