心中已經被處理的JSON字符串日期一段時間以來,there's no standard way對於和這就是爲什麼有這麼多不同的方式來做到這一點!如果JSON規範能夠首先爲日期指定標準格式,那麼可能會更好!
微軟正在做它以自己的方式,在UTC格式的自1970年以來計數毫秒這是一樣的東西"/Date(1319266795390+0800)/"
我們已經改變上述字符串ISO-8601 format自從使用上ASP.Net JavaScriptSerializer
輸出的頂端正則表達式。這是一個W3C標準,人類可讀和大多數瀏覽器連載日期字符串的方式,方法如下:
static readonly long DATE1970_TICKS = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).Ticks;
static readonly Regex DATE_SERIALIZATION_REGEX = new Regex(@"\\/Date\((?<ticks>-?\d+)\)\\/", RegexOptions.Compiled);
static string ISO8601Serialization(string input)
{
return DATE_SERIALIZATION_REGEX.Replace(input, match =>
{
var ticks = long.Parse(match.Groups["ticks"].Value) * 10000;
return new DateTime(ticks + DATE1970_TICKS).ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff");
});
}
您可以輕鬆更改格式,以滿足您的需求,看到自定義日期和時間格式check out MSDN article here
這裏是如何使用它:
JavaScriptSerializer ser = new JavaScriptSerializer();
var JsonSrt = ISO8601Serialization(ser.Serialize(DateTime.Now)); // "\"2012-05-09T14:51:38.333\""
更新:
有一個阿爾特rnative來調整JSON字符串從服務器返回JavaScript中更可讀的形式使用正則表達式:
var str = "/Date(1319266795390+0800)/";
str.replace(/\/Date\((\d+)\+\d+\)\//, function (str, date) {
return new Date(Number(date)).toString();
});
你可以在你的問題的文本中包含更多的JSON字符串的完整例子,你想讓它更「可讀」。問題在於JSON主要用於將對象轉換爲字符串,以便能夠傳輸到Web客戶端並將JSON轉換回JavaScript對象。 JavaScript對象應該不可讀。如果你有例如數組中的日期爲一個屬性的對象,那麼你不能使它對人類可讀性好。因此,瞭解您將哪種數據(哪個對象)序列化爲JSON字符串非常重要。 – Oleg 2012-05-07 13:53:32
你會考慮一個JavaScript解決方案嗎,還是你使用C#來完成轉換? – jmort253 2012-05-10 02:36:01