0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C# / PowerShell で JSON に突っ込める DateTime 文字列を出力する

Posted at

まさかの一発オプション… 知らなかった… (´・ω・`)

C#:

DateTime.Now.ToString("o");

PowerShell:

PS > Get-Date -Format o

出力:

2021-03-04T23:33:42.6791453+09:00

JSON と DateTime

JSON には DateTime 型がないので、DateTime 値を文字列に変換する必要がある。ここで考慮しなければならないのが、「文字列で表現した DateTime 値をちゃんと逆変換できるのか?」という点。特に、 サードパーティ製サービスとの通信を JSON で実施する場合、そのサービスがちゃんと逆変換してくれる形式である必要がある (もちろんサービスがフォーマット指定してるならそれに習うべき)。
一般論としてどんな形式がよく使われているか?と考えてみると、 ISO 8601 (ex: 2021-03-04T23:33:42.6791453+09:00) が1つの候補として挙げられると思う。

C# で DateTime 型をこの形式の文字列に出力する場合、これまで自分はフォーマットを指定していたのだが…

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffffK");

色々と調べた結果、前述のように一発オプションで出力できることが判明…

背景

GCP の BigQuery でテーブルを作成する際、サンプルデータ (JSONL) を使ってスキーマ自動生成をしようとした。DateTime 型データを JSON でどのような形式にすれば BigQuery が DateTime 型として認識してくれるか?を色々と思考錯誤した結果、 ISO 8601 形式に落ち着いた。

参考資料

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?