如何在android中获取当前的UTC或GMT日期时间,而不是获取设备的当前日期时间

时间:2017-08-01 11:04:33

标签: android date datetime

我想以毫秒为单位获取当前的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设置闹钟,接收该事件会隐藏我的应用中的一些活动,我不想在此日期,时间之后显示。

我怎样才能实现这个目标?

提前致谢!

4 个答案:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

无法独立从设备获取正确的时间,如果您使用的是谷歌位置提供商,则getTime()将返回GPS信号的派生时间,否则使用服务器时间。