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

How to get current UTC or GMT date time in millis in android instead of getting device's current date time

本问题已经有最佳答案,请猛点这里访问。

我想以毫秒获得当前的UTC日期时间。
但是我用于此的每个代码都会返回设备的当前日期时间。
当我改变我的设备的日期时,它显示我变成了一个时间。
所以,我希望获得GMT / UTC日期时间,这样即使用户更改了他/她的设备的日期和时间,它也会显示正确的日期。

我试过的代码:

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

1
2
3
4
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设置闹钟,接收该事件隐藏我的应用程序中的一些活动,我不想在此日期,时间之后显示。

我该如何实现这一目标?

提前致谢!


用这个 ....

1
2
3
4
5
6
7
8
9
10
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();

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


1
2
3
4
5
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


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