2017-04-20 34 views
0

嘿,我非常疑惑爲什麼我顯示的值是負值。我在未來選擇一個日期,所以它不應該有一個更大的毫秒值,那麼當前時間?從未來日期扣除當前日期會使負數減少

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 
      Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
      Calendar c2 = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 

      sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 

      try { 
       c1.setTime(sdf.parse(res.getString(1))); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 


      c2.getTime(); 
      displayMsg.setText((c1.getTimeInMillis()-c2.getTimeInMillis())/(1000*60)+ " minutes"); 
+2

很確定你的格式中「DD」已關閉。因爲那是「一年一天」。你想'dd'。 –

+0

我們如何知道日期是在未來?你嘗試打印嗎?請發佈[mcve]。 – shmosel

回答

0

你的問題就在這裏:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 

,如果你看一下Java docs你會看到DD意思是「天一年」,而不是dd,這是「天月」。所以做到這一點:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
+0

非常感謝您的回覆,我仍然在學習java,這些快速簡潔的回覆很有幫助 –

+0

歡迎您。很高興我能幫上忙。 – BlackHatSamurai

0

儘量不要進入這樣的糾紛,因爲它永遠不會寫得這麼忙碌的代碼。

在Github上使用漂亮時庫... Pretty Time Library

我認爲你不需要任何幫助不止於此。

而不是你的問題不完整。以及嘗試使用yyyy-MM-dd。