2016-08-17 54 views
0

我正在嘗試檢查用戶執行操作後是否已經過去了一個多小時。檢查在Android應用程序打開之間是否已經過了1小時?

當前我將日期/時間存儲在sharedpreferences中,然後當用戶再次點擊活動時,我檢查當前時間的sharedpref時間。例如,如果用戶在今天上午10點在應用程序中執行某些操作,然後明天上午3點再回來,那麼我想知道是否已經過了一個多小時。

我試了一堆從SO的答案,沒有運氣。似乎sharedpref時間正在保存爲'8/17/16'與timeInMili的日期。任何幫助都會很棒。

活性方法:

lastConfigCheck = prefs.getString("LAST_CONFIG_CHECK_DATE", null); 



    if (lastConfigCheck == null) { 

     lastConfigCheck = String.valueOf(System.currentTimeMillis()); 

     editor.putString("LAST_CONFIG_CHECK_DATE", lastConfigCheck); 
     editor.apply(); 

     Log.d("hellohours", lastConfigCheck); 

    } 

    else { 

     long todaysTime = System.currentTimeMillis(); 

     Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck); 

     if (timeElapsed > 120000) { 

      Log.d("hellohours", "boom digity"); 

     } else { 

      Log.d("hellohours", "boom awesome"); 
     } 

    } 

當我檢查logcat的,它指出該行

Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck); 

原因:

"java.lang.NumberFormatException: Invalid long: "8/17/2016"' 
+1

@sumandas有正確的答案和工作。然而,要指出要確保所有變量都是正確的「類型」。我遇到問題的原因是因爲當我使用'Long'時我使用'long'。 – AndroidDev21921

回答

3

價值從該:

System.currentTimeMillis() 

以Long返回。因此,儘量在Shared Preferences中存儲該值。

editor.putLong("LAST_CONFIG_CHECK_DATE", System.currentTimeMillis()); 

編號:Developer Forum

一旦做到這一點,你沒有做任何的轉換和數學運算很容易。

相關問題