2010-12-10 30 views
-1

我有一個遠程SQL satabase,我通過php與JSON連接。我如何解析從SQL日期時間到JSON,最後到java.util.Date?

我可以得到字符串和整型數據OK,但現在我有一個問題....我有我的SQL數據庫的日期時間字段,我不知道如何使用JSON到java.util.Date

這是我tryed代碼,但它無法正確地獲取日期,它給了我一個異常(java.lang.ClassCastException: java.lang.String

代碼:

JSONArray jArray = new JSONArray(result); 


       for(int i=0;i<jArray.length();i++) 
       { 
         JSONObject json_data = jArray.getJSONObject(i);       
         positions.add(new Position(json_data.getString("latitude"), json_data.getString("longitude"), (Date)json_data.get("timestamp"))); 
       } 
+0

如何被編碼的日期? Jason中的字符串是什麼樣的? – 2010-12-10 23:42:23

回答

2

您必須獲取的JSON發送的字符串數據並使用SimpleDateFormat之類的東西解析該字符串。

1

在我的項目中,我使用了兩種不同的解決方案。

  1. 存儲日期不是日期,而是一樣長(從1980年1月1日開始的毫秒數)。在Java中,你可以使用date.getTime()來獲得。 PHP中也應該有一個方法。在Java中獲取Date對象只是將long值傳遞給構造函數(date = new Date(long_value))。 使用此方法,日期來自不同時區時可能會有問題。

  2. 在JSON中將日期寫爲格式化的日期字符串。你如何編碼日期取決於你。下面給出一個簡短的例子。請參閱[1]瞭解更多信息。

要獲取日期,您需要一個SimpleDateFormater。

DateFormat df = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); 
try 
{ 
    Date today = df.parse("2001.07.04 AD at 12:08:56 PDT");    
    System.out.println("Today = " + df.format(today)); 
} 
catch (ParseException e) 
{ 
    e.printStackTrace(); 
} 

[1] http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html