2017-08-01 102 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信號返回派生時間,否則使用服務器時間。

相關問題