【问题标题】:How to get current UTC or GMT date time in millis in android instead of getting device's current date time [duplicate]如何在android中以毫秒为单位获取当前的UTC或GMT日期时间,而不是获取设备的当前日期时间[重复]
【发布时间】:2018-01-08 05:12:30
【问题描述】:

我正在尝试以毫秒为单位获取当前的 UTC 日期时间。 但是我为此使用的每个代码都会返回设备的当前日期时间。 当我更改设备的日期时,时间显示我已更改。 所以,我想获取 GMT/UTC 日期时间,这样即使用户更改了他/她设备的日期和时间,它也会显示正确的日期。

我尝试过的代码:

Calendar calendar = Calendar.getInstance();
        long now = calendar.getTimeInMillis();

DateFormat df = DateFormat.getTimeInstance();
        df.setTimeZone(TimeZone.getTimeZone("UTC"));
        String gmtTime = df.format(new Date());
        Date gmtDate = df.parse(gmtTime);

实际上,我想在 2017 年 11 月 15 日下午 5 点使用 AlarmManager 设置闹钟,收到该事件后,我的应用程序中将隐藏一些我不想在此日期、时间之后显示的活动。

我怎样才能做到这一点?

提前致谢!

【问题讨论】:

  • getTimeInMillis() 不依赖于时区
  • 最好从服务器检索时间,因为如果用户更改它,您将无法获得实际时间

标签: android date datetime


【解决方案1】:

使用这个....

Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTimeInM‌​illis()

for eg.
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
long timeInMili = calendar .getTimeInMillis();

or

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
long timeInMili = calendar .getTimeInMillis();

【讨论】:

  • getTimeMillis() 返回“当前时间,距纪元的 UTC 毫秒数”。所以设置不同的时区不会改变结果。
【解决方案2】:

试试TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);

【讨论】:

    【解决方案3】:
    long timestampMilliseconds =System.currentTimeMillis();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US);
        simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
        String stringDate = simpleDateFormat.format(new Date(timestampMilliseconds));
        System.out.println(stringDate);
    

    如果你想获得 utc,只需更改时间 zsone

    【讨论】:

      【解决方案4】:

      没有办法独立地从设备获取正确的时间,如果您使用的是 Google Location Provider,那么 getTime() 将返回来自 GPS 信号的派生时间,否则使用服务器时间。

      【讨论】:

        猜你喜欢
        • 2013-05-07
        • 2011-04-19
        • 2017-05-08
        • 2012-01-15
        • 2011-09-03
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多