在 .Net 2.0 中将“\/Date(1427565325073+0100)\/”解析为 DateTime

Parse "\/Date(1427565325073+0100)\/" to DateTime in .Net 2.0

有很多关于如何使用 .net4+ 在 C# 中解析 "json date" 的示例,但我还没有找到很多可以在 .Net 2.0 上运行的示例。

喜欢这个 Parsing JSON DateTime from Newtonsoft's JSON Serializer 如果你有 .net4 并且可以使用库,它会很好用..

然而,我只有 base .Net 2 可供使用。

那么,最好的解析方法是什么:

"/Date(1427565325073+0100)/"

C# System.DateTime.

我的代码当前代码不适用于时区。

private System.DateTime ParseJsonDate(string jsondate)
{
    jsondate = jsondate.Replace("/Date(", "");
    jsondate = jsondate.Replace(")/", string.Empty);  
    var expDate = new System.DateTime(long.Parse(jsondate));

    return expDate;
}

首先,你可以尝试寻找JSON.NET的早期版本,我相信有一些支持.NET 2.0。

如果你找不到任何东西,你可以通过 JSON.NET source code on github 找到代码,它完成了工作并被时间和人们证明了。

或者你可以根据我的小样本编写自己的实现:

var input = "/Date(1427565325073+0100)/";

var dateVal = input.Substring(6, input.Length - 8);
Console.WriteLine(dateVal);

var parts = dateVal.Split('+');
var milliseconds = long.Parse(parts[0]);
var utcTime = new DateTime(1970, 1, 1).AddMilliseconds(milliseconds);
Console.WriteLine(utcTime);

var localTime = utcTime;
if (parts.Length > 1)
{
    var hoursMinutes = int.Parse(parts[1]);
    localTime = localTime.AddHours(hoursMinutes / 100).AddMinutes(hoursMinutes % 100);
}
Console.WriteLine(localTime);