2015-10-29 131 views
0

我有服務,支持這一JSON:CONVER日期時間字符串轉換爲毫秒

JSON={"time":"2015-10-29 14:05:13 +0000"} 

,所以我想通過它CONVER,以毫秒爲單位:

String temp = json.getString("time"); 
      int point = temp.indexOf("+"); 
      temp = temp.substring(0,point-1); 
      SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-dd hh:mm:ss"); 
      Date d = f.parse(temp); 
      long milliseconds = d.getTime(); 

,我可以看到我的臨時更改爲:2015-10-29 14:05:13 但它似乎有解析問題。什麼是我的formatig問題

+0

你已經把: 「YYYY-MMM-DD HH:MM:SS」 但你應該只有兩個M的這個月。即「yyyy-MM-dd hh:mm:ss」 – Matt

+0

@ user2145222你是對的。謝謝 – Kenji

回答

0

最重要的改進是選擇用符號MM和HH(不HH)和Z正確的模式:

String input = "2015-10-29 14:05:13 +0000"; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); 
Date d = sdf.parse(input); 
  • MM是月組成的2的數值表示而MMM則是文字縮寫。

  • H代表24小時制,h代表12小時制。其中Z是所謂的rfc 822 timezone offset。你的輸入有這樣的偏移,所以爲什麼要過濾掉它?因爲那麼你的格式化程序就會解釋系統時區中的過濾輸入(它可能與原始輸入中包含的偏移量不同),所以甚至會出錯。

+0

謝謝我的問題是我把MMM而不是mm的錯誤,這種格式不會工作和分析錯誤。 :( – Kenji

+0

@Kenji我不確定你是否問過Z?無論如何,我已經添加了一個解釋你爲什麼應該考慮解析的偏移量。 –

0

ss只返回您的數據達秒。要返回毫秒,你需要使用以下命令:

String temp = json.getString("time"); 
    int point = temp.indexOf("+"); 
    temp = temp.substring(0,point-1); 
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSZZ"); 
    Date d = f.parse(temp); 
    long milliseconds = d.getTime(); 

希望這有助於:)

相關問題