如何在Android中使用GMT获取当前日期?

时间:2013-07-18 09:25:38

标签: java android gmt

我希望当前日期在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日期。

3 个答案:

答案 0 :(得分:5)

这可能有效

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

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

编辑:您还可以查看This

答案 1 :(得分: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。如果您希望即使您的设备日期是2000年7月16日,也需要7月18日格林尼治标准时间,那么我认为您可以在没有从某个网络实体获取的情况下执行此操作。

编辑2:

你应该看this SO reference类似的问题,它可能对你有好处。

答案 2 :(得分: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"));

工作正常。