0

我想要 GMT 时区的当前日期。我使用了以下代码。

 public static Date getGMTDate(String dateFormat) throws ParseException
   {
        SimpleDateFormat dateFormatGmt = new SimpleDateFormat(dateFormat);
        dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));

        // Local time zone
        SimpleDateFormat dateFormatLocal = new SimpleDateFormat(dateFormat);

        // Time in GMT
        return dateFormatLocal.parse(dateFormatGmt.format(new Date()));
   }

//调用上面的函数。

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = getGMTDate("yyyy-MM-dd HH:mm:ss");

当我将更改我的设备日期时,时间以 GMT 格式显示,但日期不显示在 GMT 时区中。它显示设备的日期。但我想要当前 GMT 日期。

4

3 回答 3

5

这可能有效

        SimpleDateFormat dateFormatGmt = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss");
        dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
        System.out.println(dateFormatGmt.format(new Date())+"");

指定格式,您将在 GMT 中得到它!

编辑:你也可以检查这个

于 2013-07-18T09:32:10.060 回答
1

我改变了你的方法如下

public static String getGMTDate() {
    DateFormat dateFmt = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.MEDIUM, SimpleDateFormat.MEDIUM);
    dateFmt.setTimeZone(TimeZone.getTimeZone("GMT"));

    // Time in GMT
    return dateFmt.format(new Date());
}

并得到了以下日期(这与我相信的你想要的相同)

07-18 10:41:54.525: D/test(6996): GMT Date is: **Jul 18, 2013 10:41:03 AM**

因此,只需调用此方法,它将以字符串格式返回 GMT 日期。

编辑1:

您正在设置 GMT 时区而不是 GMT 日期。您不是在尝试理解您的代码。当您调用new Data()它时,它会返回您的设备日期,然后您将其格式化为相应的 GMT 日期和时间。因此,如果您将设备日期更改为 7 月 16 日,那么您的代码(甚至我的代码)将返回相当于 7 月 16 日的 GMT 时间。如果您想要格林威治标准时间 7 月 18 日,即使您的设备日期是 2000 年 7 月 16 日,那么我认为如果不从某个网络实体获取它,您就无法做到这一点。

编辑2:

您应该查看此 SO 对类似问题的参考,它可能对您很有帮助。

于 2013-07-18T10:44:40.780 回答
1

输出:2016-08-01 14:37:48 UTC

    final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

工作正常。

于 2016-08-03T10:21:56.513 回答