[.Net][C#] 日付のJSONデシリアライズ
前書き
.Net Framework界隈では、Newtonsoft.Jsonがデファクトスタンダードでしょうか。
Newtonsoft.Jsonを使ってSystem.DateTime
型を変換するときには、タイムゾーンの扱いに応じて4つのオプション Local
Utc
Unspecified
RoundtripKind
があります。
ドキュメントを読んでもいまいちわからなかったので実際に動かしてみました。
実験結果
デシリアライズ
2019-12-31T15:00:00.000Z
という日付をデシリアライズすると、、、
オプション | DateTime の値 |
DateTime.Kind の値 |
---|---|---|
Local |
2020-01-01 00:00:00 | Local |
Utc |
2019-12-31 15:00:00 | Utc |
Unspecified |
2019-12-31 15:00:00 | Unspecified |
RoundtripKind |
2019-12-31 15:00:00 | Utc |
シリアライズ
シリアライズは、ドキュメントにある通りです。まとめてみます。
DateTime.Kindの値 | |||
---|---|---|---|
オプション | Unspecified | Utc | Local |
Local | 2013-01-21T00:00:00+09:00 | 2013-01-21T00:00:00+09:00 | 2013-01-21T00:00:00+09:00 |
Utc | 2013-01-21T00:00:00Z | 2013-01-21T00:00:00Z | 2013-01-20T15:00:00Z |
Unspecified | 2013-01-21T00:00:00 | 2013-01-21T00:00:00 | 2013-01-21T00:00:00 |
RoundtripKind | 2013-01-21T00:00:00 | 2013-01-21T00:00:00Z | 2013-01-21T00:00:00+09:00 |