今天就跟大家聊聊有關怎么在C#中使用JavaScriptSerializer序列化時間類型處理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
最近在做一個數據交換服務接口,用的 .NET Web API 項目。需要監控每次請求的數據,也就是操作日志。請求數據為實體對象,所以我用了序列化將請求內容讀取并寫入日志。咋一看,好像并沒有什么問題,但是時間卻不是我們平??吹降母袷?。效果圖是這樣的:
猜測這里是由于 js 初始化時間的時候往往是向 1970/01/01 添加毫秒數,JavaScriptSerializer 進行序列化的時候也會格式化為距離1970/01/01 到當前時間點 GMT+0 時間的毫秒數,如果直接反序列化可以看到少了8小時,且時間精度到毫秒,原來初始化的時間精度是 10-7 秒。
這種時間格式是使用于 js 的,但如果我們想把這個信息保存的話,這樣的時間格式不適合閱讀。因此需要做一下轉換。以下代碼利用正則表達式將毫秒數轉換成本時區的時間格式:
/// <summary> /// 序列化請求數據 /// </summary> /// <param name="obj">請求數據</param> /// <returns></returns> public string LocalSerialize(object obj) { var jser = new System.Web.Script.Serialization.JavaScriptSerializer(); var json = jser.Serialize(obj); //將時間格式轉換為適合閱讀習慣的格式 json = System.Text.RegularExpressions.Regex.Replace(json, @"\\/Date\((\d+)\)\\/", match => { DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value)); dt = dt.ToLocalTime(); //本地時間 return dt.ToString(); ; }); return json; }
然后再調用該方法就可以了。完成后的效果圖:
看完上述內容,你們對怎么在C#中使用JavaScriptSerializer序列化時間類型處理有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。