C# で DateTime オブジェクトから ISO 8601 形式の文字列を取得する
ISO 8601 形式は、日付と時刻を表現するための国際標準です。C# の DateTime
オブジェクトは、この形式の文字列を取得するための便利なメソッドを提供しています。
ToString()
メソッドの使用
最も直接的な方法は、DateTime
オブジェクトの ToString()
メソッドを使用し、適切な書式指定子を提供することです。ISO 8601 形式の書式指定子は "O" です。
DateTime dateTime = DateTime.Now;
string iso8601String = dateTime.ToString("O");
このコードでは、DateTime.Now
で現在の時刻を取得し、ToString("O")
で ISO 8601 形式の文字列を取得しています。
DateTimeOffset
の使用
タイムゾーン情報も含まれる場合、DateTimeOffset
構造体を使用することができます。
DateTimeOffset dateTimeOffset = DateTimeOffset.Now;
string iso8601String = dateTimeOffset.ToString("O");
DateTimeFormatter
クラス (NET 6 以降)
NET 6 以降では、DateTimeFormatter
クラスを使用してより柔軟な書式設定を行うことができます。
DateTime dateTime = DateTime.Now;
string iso8601String = dateTime.ToString("O", CultureInfo.InvariantCulture);
この方法では、CultureInfo.InvariantCulture
を使用して、文化に依存しない書式を指定しています。
注意:
- タイムゾーン情報を正しく処理するには、
DateTimeOffset
を使用することをおすすめします。
C# で ISO 8601 形式に変換する例
例:
DateTime dateTime = DateTime.Now;
string iso8601String = dateTime.ToString("O");
DateTimeOffset dateTimeOffset = DateTimeOffset.Now;
string iso8601String = dateTimeOffset.ToString("O");
DateTime dateTime = DateTime.Now;
string iso8601String = dateTime.ToString("O", CultureInfo.InvariantCulture);
DateTime dateTime = DateTime.Now;
string iso8601String = dateTime.ToString("O");
DateTimeOffset dateTimeOffset = DateTimeOffset.Now;
string iso8601String = dateTimeOffset.ToString("O");
DateTime dateTime = DateTime.Now;
string iso8601String = dateTime.ToString("O", CultureInfo.InvariantCulture);
拡張メソッドの使用
拡張メソッドを使用することで、DateTime
オブジェクトに新しいメソッドを追加することができます。
public static class DateTimeExtensions
{
public static string ToIso8601String(this DateTime dateTime)
{
return dateTime.ToStr ing("O");
}
}
この拡張メソッドを使用すると、以下のように書くことができます。
DateTime dateTime = DateTime.Now;
string iso8601String = dateTime.ToIso8601String();
第三者ライブラリ
c# datetime datetime-format