JSON中的特殊日期字串(Javascript)

這個問題發生在寫C#的時候

我在MSSQL存了一欄資料格式為Timestamp

當取出資料用JsonConvert序列化送到前端後

該資料竟然變成了很詭異的字串

送到前端的資料變成以下的樣子

/Date(1597221690260)/

/Date(1597221197243)/

查了一下資料得知

原來JSON規格中沒有對日期時間的型別去做定義

在 .NET 環境下的日期時間資料在序列化之後會用  /Date(tick)/  這樣的表示法

讓使用者知道某個欄位的資料是個日期型別

且該欄位就變成字串的型態

 

要再換回日期型態

可以使用以下方法

---------------------------------------------------------------

var datetime = data.substring(6, data.length - 2)

new Date(parseInt(datetime, 10))

---------------------------------------------------------------

舉例來說

_item是我前端接收到json後parse成的物件

其中一個欄位叫做update_time

而_item.update_time顯示的資料為  /Date(1597221690260)/

首先先把該字串處理一下,保留數字的部分

所以substring後的結果為1597221690260

再把該數字字串轉成int

parseInt第二個欄位是指定進位系統的數字

因為預設不一定是10進位,所以要加上10

轉成數字後就可以丟進new Date()裡面轉成日期型態啦