2012-06-02 80 views
2

我查看了所有可能的答案,但我很難找出這個問題。Json日期到Java日期並返回Json日期

我有一個字符串中的Json日期。我想轉換成Java日期而不會浪費時間。

另外我想從Java日期轉換爲Json日期字符串。

在這裏,我有。

String jsonDateString = "/Date(1295157600000-0600)/"; 

回答

2

您的時間有兩部分:當地時間以毫秒爲單位,以小時和分鐘爲單位的偏移量。你必須解析它們並「添加」它們以獲得毫秒UTC。

可以使用此功能做到這一點:

private static Pattern p = Pattern.compile("\\((\\d+)([+-]\\d{2})(\\d{2})\\)"); 
public static Date jd2d(String jsonDateString) { 
    Matcher m = p.matcher(jsonDateString); 
    if (m.find()) { 
     long millis = Long.parseLong(m.group(1)); 
     long offsetHours = Long.parseLong(m.group(2)); 
     long offsetMinutes = Long.parseLong(m.group(3)); 
     if (offsetHours<0) offsetMinutes *= -1; 
     return new Date(
      millis 
      + offsetHours*60l*60l*1000l 
      + offsetMinutes*60l*1000l 
     ); 
    } 
    return null; 
} 

使「退回」的JSON日期,我只想編碼UTC時間:

String jsonDate = "/Date("+date.getTime()+"+0000)/"; 
+0

你嘗試與樣本串? –

+1

不知道'-0600'?這是偏移量,這是不幸被稱爲「JSON日期」的完美接受部分。哦,我討厭這個詞!爲什麼會出現這種可怕的格式? ISO 8601出了什麼問題,或者只是簡單的毫秒! [哦,你好! OH MY EYES !!](http://bit.ly/AgRj3r) –

+0

謝謝大家。通過使用dystroy的建議,我可以轉換爲Long。我的問題應該更清楚。這是從WCF REST服務獲得的json日期。另外我查看了日期的「-0600」,它是時區偏移量。由於我正在使用dystroy的解決方案,有沒有辦法讓我可以保留時區信息呢? –