溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在C#中使用JavaScriptSerializer序列化時間類型處理

發布時間:2021-03-30 16:30:54 來源:億速云 閱讀:221 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關怎么在C#中使用JavaScriptSerializer序列化時間類型處理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

最近在做一個數據交換服務接口,用的 .NET Web API 項目。需要監控每次請求的數據,也就是操作日志。請求數據為實體對象,所以我用了序列化將請求內容讀取并寫入日志。咋一看,好像并沒有什么問題,但是時間卻不是我們平??吹降母袷?。效果圖是這樣的:

怎么在C#中使用JavaScriptSerializer序列化時間類型處理

  猜測這里是由于 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序列化時間類型處理

看完上述內容,你們對怎么在C#中使用JavaScriptSerializer序列化時間類型處理有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女