2013-05-05 44 views
1

我收到一個JSON日期時間值,看起來像下面這樣的JSON日期/時間值:「/日期(1313438502992)/」解析使用C#/的Windows.Data.Json庫的WinRT項目

哪有我使用Windows.Data.Json庫將它轉換爲C#中正確的DateTime值?

使用在一個不正確的日期時間值以下代碼的結果被報告:

string dateValue = value.GetString(); 
//we get a value like "/Date(1313438502992)/" 

dateValue = dateValue.Replace("/Date(", ""); 
dateValue = dateValue.Replace(")/", ""); 

var PublishDate = new System.DateTime(Convert.ToInt64(dateValue)); 

不知道,如果JSON編碼器和C#DateTime對象使用曆元的相同概念。任何指導將深表謝意。

+0

我覺得「/日期(1313438502992)/」包含了'DateTime'對象蜱和返回我「01/02/0001 12時29分03秒「,你是否也一樣? – Xyroid 2013-05-05 03:28:25

+0

對 - 這正是我所看到的,但預期值爲2011年8月15日8:01:42 PM。 Damir自1970年1月1日以來計算毫秒數的見解是關鍵:新DateTime(1970,1,1).AddMilliseconds(millisecs); – kewlking 2013-05-05 20:36:44

回答

1

JSON值應該是number of milliseconds since January 1st 1970 UTC。試試下面的代碼,如果它給你預期的結果:

var match = Regex.Match(dateValue, @"/Date\((?<millisecs>-?\d*)\)/"); 
var millisecs = Convert.ToInt64(match.Groups["millisecs"].Value); 
var date = new DateTime(1970, 1, 1).AddMilliseconds(millisecs); 
+0

達米爾,非常感謝!這正是我所需要的。 – kewlking 2013-05-05 20:33:51