カテゴリ: C# 更新日: 2025/12/08

C#で日時をJSONにシリアライズするフォーマット指定を完全解説!初心者向けガイド

C#で日時をJSONにシリアライズする際のフォーマット指定
C#で日時をJSONにシリアライズする際のフォーマット指定

先生と生徒の会話形式で理解しよう

生徒

「C#で日時をJSONに変換するとき、変な形式で出力されてしまうことがあります。好きな形に変更する方法はありますか?」

先生

「はい、C#では日時をシリアライズするときにフォーマットを自由に指定できます。設定次第で見やすく、扱いやすい形に整えることができます。」

生徒

「どうやって指定すればいいんですか?難しい設定が必要なんでしょうか?」

先生

「実はとても簡単です。これから、基本的な方法を順番に説明していきます。」

C#で日時をJSONにシリアライズするとどうなる?

C#で日時をJSONにシリアライズするとどうなる?
C#で日時をJSONにシリアライズするとどうなる?

C#で日時(DateTime)をJSONに変換するとき、特に設定をしないままだと、標準の形式で出力されます。標準形式では、「UNIX時間」や「ISO 8601形式」など、人間には読みづらい形で表現されることがあります。

例えば、システムの既定形式では次のような出力になり、初めて見ると意味が分かりづらいかもしれません。


2025-12-01T10:30:00.000Z

これは国際標準のISO 8601形式で、「T」は日時の区切り、「Z」は世界標準時(UTC)を表しています。初心者にとっては読み解きにくいため、自由にフォーマットを指定する方法を知ることはとても重要です。

日時フォーマットを指定してJSONにシリアライズする方法

日時フォーマットを指定してJSONにシリアライズする方法
日時フォーマットを指定してJSONにシリアライズする方法

C#では、JSONのシリアライズに使われるライブラリとして主に以下があります。

  • System.Text.Json(.NET標準)
  • Newtonsoft.Json(広く利用されているライブラリ)

ここでは、実務でもよく使われるNewtonsoft.Jsonを例に日時フォーマットを指定する方法を説明します。


using Newtonsoft.Json;
using System;

public class Sample
{
    public DateTime CreatedAt { get; set; }
}

var sample = new Sample
{
    CreatedAt = new DateTime(2025, 12, 1, 10, 30, 0)
};

var settings = new JsonSerializerSettings
{
    DateFormatString = "yyyy/MM/dd HH:mm:ss"
};

string json = JsonConvert.SerializeObject(sample, settings);
Console.WriteLine(json);

この例では、yyyy/MM/dd HH:mm:ssという形式で出力されます。これは、「西暦4桁/月2桁/日2桁 時:分:秒」の順番で読みやすい形になります。


{"CreatedAt":"2025/12/01 10:30:00"}

System.Text.Jsonでフォーマット指定する方法

System.Text.Jsonでフォーマット指定する方法
System.Text.Jsonでフォーマット指定する方法

最近のC#では、標準のSystem.Text.Jsonもよく使われます。この場合はカスタムコンバータを使う必要があります。


using System;
using System.Text.Json;
using System.Text.Json.Serialization;

public class DateTimeConverter : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type type, JsonSerializerOptions options)
        => DateTime.Parse(reader.GetString());

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
        => writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
}

var options = new JsonSerializerOptions
{
    Converters = { new DateTimeConverter() }
};

var obj = new { Time = DateTime.Now };
string json = JsonSerializer.Serialize(obj, options);
Console.WriteLine(json);

{"Time":"2025-12-01 10:30:00"}

このように、ライブラリによって設定方法は異なりますが、目的は日時を読みやすく整えることです。

日時フォーマットの主な例一覧

日時フォーマットの主な例一覧
日時フォーマットの主な例一覧

格式は自由に変えられます。よく使われる形式をまとめました。

  • yyyy-MM-dd:2025-12-01
  • HH:mm:ss:10:30:00
  • yyyy-MM-ddTHH:mm:ssZ:ISO 8601形式(国際標準)
  • yyyy/MM/dd HH:mm:ss:日本で一般的な形式

目的に応じて使い分けられるようになると、JSONデータの管理が格段に楽になります。

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方