2012-01-12 23 views
7

讀取通過Android程序上的WCF REST服務發送的.NET DateTime的最簡單方法是什麼?日期序列化爲以下格式:Data =/Date(1326273723507 + 0100)/從Android讀取WCF REST日期

是否有反序列化日期的簡單方法?

謝謝。

+0

你想要反序列化.NET端或Android – Rajesh 2012-01-12 09:24:15

+0

我想在android上反序列化。 – 2012-01-12 11:08:33

+1

類似的東西,希望它可以幫助... http://stackoverflow.com/questions/5671373/unparseable-date-1302828677828-trying-to-deserialize-with-gson-a-millisecond – Rajesh 2012-01-12 11:16:13

回答

7

好在我已完全一樣的問題,我與簡單的代碼解決它

public class Json { 

    /** 
    * Convertit une date Json en java.util.Date 
    * @param jsonDate 
    * @return 
    */ 
    public static Date JsonDateToDate(String jsonDate) 
    { 
    // "/Date(1321867151710+0100)/" 
    int idx1 = jsonDate.indexOf("("); 
    int idx2 = jsonDate.indexOf(")") - 5; 
    String s = jsonDate.substring(idx1+1, idx2); 
    long l = Long.valueOf(s); 
    return new Date(l); 
    } 
} 

如果你使用GSON,你也可以使用該解決方案:gson serialization of Date field in MS WCF compatible form

4

XML序列化器使用Ticks屬性序列化Datetime實例以獲得最佳精度(Ticks是自0001年1月1日午夜12:00:00開始經過的100納秒間隔的數量)。這是你在這裏看到的,這意味着GMT + 1:00

蜱轉換成有效的Java日期,見全碟(條條大路通喬恩斯基特)回答這裏的號碼,然後按+0100:

C# DateTime.Ticks equivalent in Java

0

我向WCF REST服務發送和接收日期/從WCF REST服務接收日期。在從Epoch(使用Jon Skeet的答案)開始,將ticks轉換爲毫秒之後,我決定將日期存儲爲Java long值(來自date.getTime()),以便我不做任何轉換,並且來自Android設備。如果我需要在.NET端看到它們,那麼我會進行轉換。所以,如果你可以控制WCF結束和數據庫,請保持它們的長度。