2017-08-01 57 views
-4

我想以毫秒为单位获取当前UTC日期时间。 但我用于此的每个代码都会返回设备的当前日期时间。 当我修改我的设备的日期时,它显示我正在修改一个日期。 因此,我想获取GMT/UTC的日期时间,以便即使用户更改他/她的设备的日期和时间,它也会显示正确的日期。如何获得当前的UTC或GMT日期时间以毫秒为单位,而不是获取设备的当前日期时间

代码我想:

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,收到事件隐藏在我的应用程序的一些活动,我不想在这个日期后显示时间。

我该如何实现这个目标?

在此先感谢!

+1

'getTimeInMillis()'不依赖于时区 – DeKaNszn

+1

它更好地从服务器检索时间,因为如果用户更改它,则无法获取实际时间 –

回答

0

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

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

0

使用此....

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(); 
0

有没有办法让如果您使用Google Location Provider,则getTime()将从GPS信号返回派生时间,否则使用服务器时间。

相关问题