C#使用JavaScriptSerializer序列化時的時間類型處理
最近在做一個數(shù)據(jù)交換服務接口,用的 .NET Web API 項目。需要監(jiān)控每次請求的數(shù)據(jù),也就是操作日志。請求數(shù)據(jù)為實體對象,所以我用了序列化將請求內容讀取并寫入日志。咋一看,好像并沒有什么問題,但是時間卻不是我們平??吹降母袷健PЧ麍D是這樣的:

猜測這里是由于 js 初始化時間的時候往往是向 1970/01/01 添加毫秒數(shù),JavaScriptSerializer 進行序列化的時候也會格式化為距離1970/01/01 到當前時間點 GMT+0 時間的毫秒數(shù),如果直接反序列化可以看到少了8小時,且時間精度到毫秒,原來初始化的時間精度是 10-7 秒。
這種時間格式是使用于 js 的,但如果我們想把這個信息保存的話,這樣的時間格式不適合閱讀。因此需要做一下轉換。以下代碼利用正則表達式將毫秒數(shù)轉換成本時區(qū)的時間格式:
/// <summary>
/// 序列化請求數(shù)據(jù)
/// </summary>
/// <param name="obj">請求數(shù)據(jù)</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序列化時的時間處理詳解
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- django restframework serializer 增加自定義字段操作
- django rest framework serializers序列化實例
- django rest framework serializer返回時間自動格式化方法
- Django Serializer HiddenField隱藏字段實例
- django序列化serializers過程解析
- django自帶serializers序列化返回指定字段的方法
- django Serializer序列化使用方法詳解
- 詳解django的serializer序列化model幾種方法
- C# xmlSerializer簡單用法示例
- 淺析JavaScriptSerializer類的序列化與反序列化
- C#中JavaScriptSerializer幫助類用法實例
- Python基于Serializer實現(xiàn)字段驗證及序列化
相關文章
C# OpenCvSharp實現(xiàn)去除文字中的線條
這篇文章主要為大家詳細介紹了C#如何使用OpenCvSharp實現(xiàn)去除文字中的線條效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-11-11

