【问题标题】:How to get Current Date using GMT in android?如何在android中使用GMT获取当前日期?
【发布时间】:2013-07-17 04:06:46
【问题描述】:

我想要 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 日期。

【问题讨论】:

标签: java android gmt


【解决方案1】:

这可能有效

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

指定格式,您将获得 GMT!

编辑:您也可以查看This

【讨论】:

  • 但是您的代码仅显示 GMT 当前时间。我想要当前 GMT 日期。
  • 如果您现在尝试,GMT 日期将与您的本地日期相同。我在这里错过了什么吗?
  • 当前格林威治标准时间是 2013 年 7 月 18 日上午 9:40。我想在我的 android 设备中使用它。
【解决方案2】:

我改变了你的方法如下

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 日 GMT 时间,即使您的设备日期是 2000 年 7 月 16 日,那么 我不认为您可以在不从某个网络实体获取的情况下做到这一点。

编辑 2:

您应该查看this SO reference 来解决类似的问题,它可能对您有好处。

【讨论】:

  • 请更改您的 android 设备日期,然后调用上述方法。在 android 设备中更改日期后是否得到相同的输出?请检查并给我一些解决方案。此方法仅显示 GMT 时间。
  • 如果您更改设备日期,那么您将如何获得 2013 年 7 月 18 日? new Date() 从设备本身返回一个日期。它不是从网络中获取的。
  • 但我想要当前的 GMT 日期。在我的应用程序中,我使用的是 GMT 日期。我没有使用设备日期。请说如何在 android 中找到 GMT 当前日期?
  • 我已经编辑了我的答案以包含另一个试图做同样事情的 SO 线程。你应该看看它并尝试将它用于你的目的。除此之外,我目前无法提出其他建议。
【解决方案3】:

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

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

工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-29
    • 2012-04-17
    • 2010-09-23
    • 2013-08-23
    • 2016-04-18
    • 2012-04-03
    • 1970-01-01
    • 2011-06-10
    相关资源
    最近更新 更多