標準の日時書式指定文字列

標準の日時書式指定文字列では、単一の文字を書式指定子として使用して、DateTime または DateTimeOffset の値のテキスト表現を定義します。 空白を含む複数の文字で構成される日時書式指定文字列は、カスタム日時書式指定文字列として解釈されます。 標準またはカスタムの書式指定文字列には、次の 2 とおりの使用方法があります。

  • 書式設定操作によって生成される文字列を定義する。

  • 解析操作によって DateTime 値または DateTimeOffset 値に変換できる日付と時刻の値のテキスト表現を定義する。

ヒント

書式指定ユーティリティである .NET Windows Forms をダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。 ソース コードは C#Visual Basic で利用できます。

注意

この記事の C# 例の一部は、Try.NET インライン コード ランナーとプレイグラウンドで実行されます。 [実行] ボタンを選択すると、対話型ウィンドウで例が実行されます。 コードを実行したら、コードを変更し、 [実行] をもう一度選択して変更後のコードを実行できます。 変更後のコードが対話型ウィンドウで実行されるか、コンパイルできなかった場合、対話型ウィンドウにすべての C# コンパイラ エラー メッセージが表示されます。

Try.NET インライン コード ランナーとプレイグラウンドのローカル タイム ゾーンは、協定世界時 (UTC) です。 これは、DateTimeDateTimeOffsetTimeZoneInfo 型とそのメンバーについて説明する例の、動作と出力に影響を与える可能性があります。

書式指定子の表

標準日時書式指定子を次の表に示します。 特に明記されない限り、特定の標準日時書式指定子は、DateTime 値で使用しても、DateTimeOffset 値で使用してもまったく同じ文字列形式を生成します。 標準日時書式指定文字列の使用に関する詳細については、「コントロール パネルの設定」と「DateTimeFormatInfo のプロパティ」を参照してください。

書式指定子 説明 使用例
"d" 短い形式の日付パターン。

詳細については、「短い形式の日付 ("d") 書式指定子」を参照してください。
2009-06-15T13:45:30 -> 6/15/2009 (en-US)

2009-06-15T13:45:30 -> 15/06/2009 (fr-FR)

2009-06-15T13:45:30 -> 2009/06/15 (ja-JP)
"D" 長い形式の日付パターン。

詳細については、「長い形式の日付 ("D") 書式指定子」を参照してください。
2009-06-15T13:45:30 -> Monday, June 15, 2009 (en-US)

2009-06-15T13:45:30 -> понедельник, 15 июня 2009 г. (ru-RU)

2009-06-15T13:45:30 -> Montag, 15. Juni 2009 (de-DE)
"f" 完全な日付と時刻のパターン (短い形式の時刻)。

詳細情報:完全な日付と短い形式の時刻 ("f") 書式指定子
2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45 PM (en-US)

2009-06-15T13:45:30 -> den 15 juni 2009 13:45 (sv-SE)

2009-06-15T13:45:30 -> Δευτέρα, 15 Ιουνίου 2009 1:45 μμ (el-GR)
"F" 完全な日付と時刻のパターン (長い形式の時刻)。

詳細情報:完全な日付と長い形式の時刻 ("F") 書式指定子
2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45:30 PM (en-US)

2009-06-15T13:45:30 -> den 15 juni 2009 13:45:30 (sv-SE)

2009-06-15T13:45:30 -> Δευτέρα, 15 Ιουνίου 2009 1:45:30 μμ (el-GR)
"g" 一般の日付と時刻のパターン (短い形式の時刻)。

詳細情報:一般の日付と短い形式の時刻 ("g") 書式指定子
2009-06-15T13:45:30 -> 6/15/2009 1:45 PM (en-US)

2009-06-15T13:45:30 -> 15/06/2009 13:45 (es-ES)

2009-06-15T13:45:30 -> 2009/6/15 13:45 (zh-CN)
"G" 一般の日付と時刻のパターン (長い形式の時刻)。

詳細情報:一般の日付と長い形式の時刻 ("G") 書式指定子
2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM (en-US)

2009-06-15T13:45:30 -> 15/06/2009 13:45:30 (es-ES)

2009-06-15T13:45:30 -> 2009/6/15 13:45:30 (zh-CN)
"M"、"m" 月日パターン。

詳細情報:月 ("M"、"m") 書式指定子
2009-06-15T13:45:30 -> June 15 (en-US)

2009-06-15T13:45:30 -> 15. juni (da-DK)

2009-06-15T13:45:30 -> 15 Juni (id-ID)
"O"、"o" ラウンドトリップする日付と時刻のパターン。

詳細情報:ラウンドトリップ ("O"、"o") 書式指定子
DateTime の値:

2009-06-15T13:45:30 (DateTimeKind.Local) --> 2009-06-15T13:45:30.0000000-07:00

2009-06-15T13:45:30 (DateTimeKind.Utc) --> 2009-06-15T13:45:30.0000000Z

2009-06-15T13:45:30 (DateTimeKind.Unspecified) --> 2009-06-15T13:45:30.0000000

DateTimeOffset の値:

2009-06-15T13:45:30-07:00 --> 2009-06-15T13:45:30.0000000-07:00
"R"、"r" RFC1123 パターン。

詳細情報:RFC1123 ("R"、"r") 書式指定子
DateTimeOffset 入力: 2009-06-15T13:45:30 -> Mon, 15 Jun 2009 20:45:30 GMT
DateTime 入力: 2009-06-15T13:45:30 -> Mon, 15 Jun 2009 13:45:30 GMT
"s" 並べ替え可能な日付と時刻のパターン。

詳細情報:並べ替え可能な日付と時刻 ("s") 書式指定子
2009-06-15T13:45:30 (DateTimeKind.Local) -> 2009-06-15T13:45:30

2009-06-15T13:45:30 (DateTimeKind.Utc) -> 2009-06-15T13:45:30
"t" 短い形式の時刻パターン。

詳細情報:短い形式の時刻 ("t") 書式指定子
2009-06-15T13:45:30 -> 1:45 PM (en-US)

2009-06-15T13:45:30 -> 13:45 (hr-HR)

2009-06-15T13:45:30 -> 01:45 م (ar-EG)
"T" 長い形式の時刻パターン。

詳細情報:長い形式の時刻 ("T") 書式指定子
2009-06-15T13:45:30 -> 1:45:30 PM (en-US)

2009-06-15T13:45:30 -> 13:45:30 (hr-HR)

2009-06-15T13:45:30 -> 01:45:30 م (ar-EG)
"u" 並べ替え可能な日付と時刻のパターン (世界時刻)。

詳細情報:世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子
With a DateTime value: 2009-06-15T13:45:30 -> 2009-06-15 13:45:30Z

With a DateTimeOffset value: 2009-06-15T13:45:30 -> 2009-06-15 20:45:30Z
"U" 完全な日付と時刻のパターン (世界時刻)。

詳細情報:世界共通の完全な日付と時刻 ("U") 書式指定子
2009-06-15T13:45:30 -> Monday, June 15, 2009 8:45:30 PM (en-US)

2009-06-15T13:45:30 -> den 15 juni 2009 20:45:30 (sv-SE)

2009-06-15T13:45:30 -> Δευτέρα, 15 Ιουνίου 2009 8:45:30 μμ (el-GR)
"Y"、"y" 年月パターン。

詳細情報:年月 ("Y") 書式指定子
2009-06-15T13:45:30 -> June 2009 (en-US)

2009-06-15T13:45:30 -> juni 2009 (da-DK)

2009-06-15T13:45:30 -> Juni 2009 (id-ID)
その他の 1 文字 未定義の指定子。 ランタイム FormatException をスローします。

標準書式指定文字列の動作

書式設定操作では、標準書式指定文字列はカスタム書式指定文字列のエイリアスにすぎません。 エイリアスを使ってカスタム書式指定文字列を表すことの利点は、カスタム書式指定文字列はそれ自体が変化する場合があるのに対し、エイリアスは不変であるという点です。 通常、日付と時刻の値の文字列形式はカルチャによって変わるため、この点は重要です。 たとえば、"d" 標準書式指定文字列は、日付と時刻の値を短い日付形式のパターンで表示することを意味します。 インバリアント カルチャでは、このパターンは "MM/dd/yyyy" になります。 fr-FR カルチャでは、これが "dd/MM/yyyy" になります。 ja-JP カルチャでは、これが "yyyy/MM/dd" になります。

書式設定操作の標準書式指定文字列が特定のカルチャのカスタム書式指定文字列に対応付けられている場合は、使用するカスタム書式指定文字列に該当するカルチャを次のいずれかの方法で定義できます。

  • 既定の (現在の) カルチャを使用できます。 次の例では、現在のカルチャの短い日付形式を使って日付を表示します。 この場合、現在のカルチャは en-US です。

    // Display using current (en-us) culture's short date format
    DateTime thisDate = new DateTime(2008, 3, 15);
    Console.WriteLine(thisDate.ToString("d"));           // Displays 3/15/2008
    
    ' Display using current (en-us) culture's short date format
    Dim thisDate As Date = #03/15/2008#
    Console.WriteLine(thisDate.ToString("d"))     ' Displays 3/15/2008
    
  • 使用する書式のカルチャを表す CultureInfo オブジェクトを、IFormatProvider パラメーターを持つメソッドに渡すことができます。 次の例では、pt-BR カルチャの短い日付形式を使って日付を表示します。

    // Display using pt-BR culture's short date format
    DateTime thisDate = new DateTime(2008, 3, 15);
    CultureInfo culture = new CultureInfo("pt-BR");
    Console.WriteLine(thisDate.ToString("d", culture));  // Displays 15/3/2008
    
    ' Display using pt-BR culture's short date format
    Dim thisDate As Date = #03/15/2008#
    Dim culture As New CultureInfo("pt-BR")
    Console.WriteLine(thisDate.ToString("d", culture))   ' Displays 15/3/2008
    
  • 書式情報を提供する DateTimeFormatInfo オブジェクトを、IFormatProvider パラメーターを持つメソッドに渡すことができます。 次の例では、hr-HR カルチャの DateTimeFormatInfo オブジェクトに基づく短い日付形式で日付を表示します。

    // Display using date format information from hr-HR culture
    DateTime thisDate = new DateTime(2008, 3, 15);
    DateTimeFormatInfo fmt = (new CultureInfo("hr-HR")).DateTimeFormat;
    Console.WriteLine(thisDate.ToString("d", fmt));      // Displays 15.3.2008
    
    ' Display using date format information from hr-HR culture
    Dim thisDate As Date = #03/15/2008#
    Dim fmt As DateTimeFormatInfo = (New CultureInfo("hr-HR")).DateTimeFormat
    Console.WriteLine(thisDate.ToString("d", fmt))   ' Displays 15.3.2008
    

注意

日付と時刻の値の書式設定に使用するパターンまたは文字列のカスタマイズの詳細については、NumberFormatInfo クラスに関するトピックを参照してください。

標準書式指定文字列には、長いカスタム書式指定文字列に代わる、不変の省略形としての利用価値もあります。 このカテゴリに該当する標準書式指定文字列は、"O" (または "o")、"R" (または "r")、"s"、"u" の 4 つです。 これらの文字列は、インバリアント カルチャで定義されたカスタム書式指定文字列に対応します。 これらの書式指定文字列によって生成される日時値の文字列形式は、カルチャに関係なく一定です。 次の表で、この 4 つの標準日時書式指定文字列について説明します。

標準書式指定文字列 DateTimeFormatInfo.InvariantInfo プロパティによる定義 カスタム書式指定文字列
"O" または "o" None yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK
"R" または "r" RFC1123Pattern ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
"s" SortableDateTimePattern yyyy'-'MM'-'dd'T'HH':'mm':'ss
"u" UniversalSortableDateTimePattern yyyy'-'MM'-'dd HH':'mm':'ss'Z'

標準書式指定文字列は、解析操作の DateTime.ParseExact メソッドまたは DateTimeOffset.ParseExact メソッドで使用することもできます。これらのメソッドでは、解析操作が成功するための特定のパターンに入力文字列が完全に一致している必要があります。 標準書式指定文字列の多くは複数のカスタム書式指定文字列に対応付けられるため、日付と時刻の値はさまざまな書式で表されることがありますが、解析操作は成功します。 DateTimeFormatInfo.GetAllDateTimePatterns(Char) メソッドを呼び出すことにより、標準書式指定文字列に対応する 1 つまたは複数のカスタム書式指定文字列を確認できます。 次の例では、"d" (短い日付形式のパターン) 標準書式指定文字列に対応付けられているカスタム書式指定文字列を表示します。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      Console.WriteLine("'d' standard format string:");
      foreach (var customString in DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns('d'))
          Console.WriteLine("   {0}", customString);
   }
}
// The example displays the following output:
//       'd' standard format string:
//          M/d/yyyy
//          M/d/yy
//          MM/dd/yy
//          MM/dd/yyyy
//          yy/MM/dd
//          yyyy-MM-dd
//          dd-MMM-yy
Imports System.Globalization

Module Example
    Public Sub Main()
        Console.WriteLine("'d' standard format string:")
        For Each customString In DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns("d"c)
            Console.WriteLine("   {0}", customString)
        Next
    End Sub
End Module
' The example displays the following output:
'    'd' standard format string:
'       M/d/yyyy
'       M/d/yy
'       MM/dd/yy
'       MM/dd/yyyy
'       yy/MM/dd
'       yyyy-MM-dd
'       dd-MMM-yy

以降では、DateTime 値および DateTimeOffset 値の標準書式指定子について説明します。

日付の形式

このグループには、次の形式が含まれます。

短い形式の日付 ("d") 書式指定子

"d" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.ShortDatePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャの ShortDatePattern プロパティによって返されるカスタム書式指定文字列は "MM/dd/yyyy" です。

返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。

プロパティ 説明
ShortDatePattern 結果文字列の全体的な書式を定義します。
DateSeparator 日付の構成要素、つまり年、月、および日を区切る文字列を定義します。

次の例では、"d" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008,4, 10);
Console.WriteLine(date1.ToString("d", DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008
Console.WriteLine(date1.ToString("d",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays 4/10/2008
Console.WriteLine(date1.ToString("d",
                  CultureInfo.CreateSpecificCulture("en-NZ")));
// Displays 10/04/2008
Console.WriteLine(date1.ToString("d",
                  CultureInfo.CreateSpecificCulture("de-DE")));
// Displays 10.04.2008
Dim date1 As Date = #4/10/2008#
Console.WriteLine(date1.ToString("d", DateTimeFormatInfo.InvariantInfo))
' Displays 04/10/2008
Console.WriteLine(date1.ToString("d", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays 4/10/2008                       
Console.WriteLine(date1.ToString("d", _
                  CultureInfo.CreateSpecificCulture("en-NZ")))
' Displays 10/04/2008                       
Console.WriteLine(date1.ToString("d", _
                  CultureInfo.CreateSpecificCulture("de-DE")))
' Displays 10.04.2008                       

表のトップへ

長い形式の日付 ("D") 書式指定子

"D" 標準書式指定子は、現在の DateTimeFormatInfo.LongDatePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "dddd, dd MMMM yyyy" です。

返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。

プロパティ 説明
LongDatePattern 結果文字列の全体的な書式を定義します。
DayNames 結果文字列に含まれるローカライズされた日付の名前を定義します。
MonthNames 結果文字列に含まれるローカライズされた月の名前を定義します。

次の例では、"D" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10);
Console.WriteLine(date1.ToString("D",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008
Console.WriteLine(date1.ToString("D",
                  CultureInfo.CreateSpecificCulture("pt-BR")));
// Displays quinta-feira, 10 de abril de 2008
Console.WriteLine(date1.ToString("D",
                  CultureInfo.CreateSpecificCulture("es-MX")));
// Displays jueves, 10 de abril de 2008
Dim date1 As Date = #4/10/2008#
Console.WriteLine(date1.ToString("D", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008                        
Console.WriteLine(date1.ToString("D", _
                  CultureInfo.CreateSpecificCulture("pt-BR")))
' Displays quinta-feira, 10 de abril de 2008                        
Console.WriteLine(date1.ToString("D", _
                  CultureInfo.CreateSpecificCulture("es-MX")))
' Displays jueves, 10 de abril de 2008                        

表のトップへ

日付と時刻の形式

このグループには、次の形式が含まれます。

完全な日付と短い形式の時刻 ("f") 書式指定子

"f" 標準書式指定子は、長い形式の日付 ("D") パターンと短い形式の時刻 ("t") パターンを空白で区切って組み合わせて表します。

結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.LongDatePattern プロパティおよび DateTimeFormatInfo.ShortTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。

プロパティ 説明
LongDatePattern 結果文字列の日付要素の書式を定義します。
ShortTimePattern 結果文字列の時刻要素の書式を定義します。
DayNames 結果文字列に含まれるローカライズされた日付の名前を定義します。
MonthNames 結果文字列に含まれるローカライズされた月の名前を定義します。
TimeSeparator 時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。
AMDesignator 午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。
PMDesignator 正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。

次の例では、"f" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("f",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 6:30 AM
Console.WriteLine(date1.ToString("f",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays jeudi 10 avril 2008 06:30
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("f", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 6:30 AM                        
Console.WriteLine(date1.ToString("f", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays jeudi 10 avril 2008 06:30                       

表のトップへ

完全な日付と長い形式の時刻 ("F") 書式指定子

"F" 標準書式指定子は、現在の DateTimeFormatInfo.FullDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "dddd, dd MMMM yyyy HH:mm:ss" です。

返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの FullDateTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。

プロパティ 説明
FullDateTimePattern 結果文字列の全体的な書式を定義します。
DayNames 結果文字列に含まれるローカライズされた日付の名前を定義します。
MonthNames 結果文字列に含まれるローカライズされた月の名前を定義します。
TimeSeparator 時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。
AMDesignator 午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。
PMDesignator 正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。

次の例では、"F" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("F",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 6:30:00 AM
Console.WriteLine(date1.ToString("F",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays jeudi 10 avril 2008 06:30:00
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("F", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 6:30:00 AM                        
Console.WriteLine(date1.ToString("F", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays jeudi 10 avril 2008 06:30:00                       

表のトップへ

一般の日付と短い形式の時刻 ("g") 書式指定子

"g" 標準書式指定子は、短い形式の日付 ("d") パターンと短い形式の時刻 ("t") パターンを空白で区切って組み合わせて表します。

結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.ShortDatePattern プロパティおよび DateTimeFormatInfo.ShortTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。

プロパティ 説明
ShortDatePattern 結果文字列の日付要素の書式を定義します。
ShortTimePattern 結果文字列の時刻要素の書式を定義します。
DateSeparator 日付の構成要素、つまり年、月、および日を区切る文字列を定義します。
TimeSeparator 時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。
AMDesignator 午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。
PMDesignator 正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。

次の例では、"g" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("g",
                  DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008 06:30
Console.WriteLine(date1.ToString("g",
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 4/10/2008 6:30 AM
Console.WriteLine(date1.ToString("g",
                  CultureInfo.CreateSpecificCulture("fr-BE")));
// Displays 10/04/2008 6:30
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("g", _
                  DateTimeFormatInfo.InvariantInfo))
' Displays 04/10/2008 06:30                      
Console.WriteLine(date1.ToString("g", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 4/10/2008 6:30 AM                       
Console.WriteLine(date1.ToString("g", _
                  CultureInfo.CreateSpecificCulture("fr-BE")))
' Displays 10/04/2008 6:30                        

表のトップへ

一般の日付と長い形式の時刻 ("G") 書式指定子

"G" 標準書式指定子は、短い形式の日付 ("d") パターンと長い形式の時刻 ("T") パターンを空白で区切って組み合わせて表します。

結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.ShortDatePattern プロパティおよび DateTimeFormatInfo.LongTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。

プロパティ 説明
ShortDatePattern 結果文字列の日付要素の書式を定義します。
LongTimePattern 結果文字列の時刻要素の書式を定義します。
DateSeparator 日付の構成要素、つまり年、月、および日を区切る文字列を定義します。
TimeSeparator 時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。
AMDesignator 午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。
PMDesignator 正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。

次の例では、"G" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("G",
                  DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008 06:30:00
Console.WriteLine(date1.ToString("G",
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 4/10/2008 6:30:00 AM
Console.WriteLine(date1.ToString("G",
                  CultureInfo.CreateSpecificCulture("nl-BE")));
// Displays 10/04/2008 6:30:00
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("G", _
                  DateTimeFormatInfo.InvariantInfo))
' Displays 04/10/2008 06:30:00
Console.WriteLine(date1.ToString("G", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 4/10/2008 6:30:00 AM                        
Console.WriteLine(date1.ToString("G", _
                  CultureInfo.CreateSpecificCulture("nl-BE")))
' Displays 10/04/2008 6:30:00                       

表のトップへ

ラウンドトリップ ("O"、"o") 書式指定子

"O" または "o" 標準書式指定子は、タイム ゾーン情報を保持するパターンを使用するカスタム日時書式指定文字列を表し、ISO 8601 に準拠する結果文字列を生成します。 この書式指定子は、DateTime 値の日付と時刻の値を、DateTime.Kind プロパティと共にテキストとして保持できるように設計されています。 DateTime.Parse(String, IFormatProvider, DateTimeStyles) パラメーターが DateTime.ParseExact に設定されている場合は、styles メソッドまたは DateTimeStyles.RoundtripKind メソッドを使用して、書式設定された文字列を変換前の文字列に戻すことができます。

"O" または "o" 標準書式指定子は、DateTime 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列と DateTimeOffset 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" カスタム書式指定文字列に対応します。 この文字列の中で、個々の文字 (ハイフン、コロン、アルファベットの "T" など) を区切る一対の単一引用符は、各文字がリテラルであって変更できないことを示します。 アポストロフィは、出力された文字列には現れません。

"O" または "o" 標準書式指定子 (および "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列) は、DateTime 値の Kind プロパティを保持するため、ISO 8601 の 3 種類のタイム ゾーン情報表記形式を利用します。

  • DateTimeKind.Local 日時値のタイム ゾーン コンポーネントは、UTC からのオフセットです (例:+01:00、-07:00)。 DateTimeOffset のすべての値もこの形式で表記されます。

  • DateTimeKind.Utc 日時値のタイム ゾーン コンポーネントは、"Z" (ゼロ オフセットを示す) を使用して UTC を表記します。

  • DateTimeKind.Unspecified 日時値にはタイム ゾーン情報はありません。

"O" または "o" 標準書式指定子は国際基準に準拠しているため、この指定子を使用する書式設定操作または解析操作では常に、インバリアント カルチャとグレゴリオ暦が使用されます。

ParseTryParseParseExactTryParseExactDateTime、および DateTimeOffset メソッドに渡される文字列が、これらの書式で表記される場合には、書式指定子 "O" または "o" を使用して解析できます。 DateTime オブジェクトの場合、呼び出す解析オーバーロードの styles パラメーターに値 DateTimeStyles.RoundtripKind が指定されている必要があります。 "O" または "o" 書式指定子に対応するカスタム書式文字列を使用して解析メソッドを呼び出した結果は、"O" または "o" を使用した場合の結果と同じではないことに注意してください。 これは、カスタム書式文字列を使用する解析メソッドでは、タイム ゾーン コンポーネントがない日時値または "Z" を使用して UTC を示している日時値の文字列形式を解析できないためです。

次の例では、米国のシステム上で "o" 書式指定子を使用して、一連の DateTime 値および DateTimeOffset 値を表示しています。表示します。

using System;

public class Example
{
   public static void Main()
   {
       DateTime dat = new DateTime(2009, 6, 15, 13, 45, 30,
                                   DateTimeKind.Unspecified);
       Console.WriteLine("{0} ({1}) --> {0:O}", dat, dat.Kind);

       DateTime uDat = new DateTime(2009, 6, 15, 13, 45, 30,
                                    DateTimeKind.Utc);
       Console.WriteLine("{0} ({1}) --> {0:O}", uDat, uDat.Kind);

       DateTime lDat = new DateTime(2009, 6, 15, 13, 45, 30,
                                    DateTimeKind.Local);
       Console.WriteLine("{0} ({1}) --> {0:O}\n", lDat, lDat.Kind);

       DateTimeOffset dto = new DateTimeOffset(lDat);
       Console.WriteLine("{0} --> {0:O}", dto);
   }
}
// The example displays the following output:
//    6/15/2009 1:45:30 PM (Unspecified) --> 2009-06-15T13:45:30.0000000
//    6/15/2009 1:45:30 PM (Utc) --> 2009-06-15T13:45:30.0000000Z
//    6/15/2009 1:45:30 PM (Local) --> 2009-06-15T13:45:30.0000000-07:00
//
//    6/15/2009 1:45:30 PM -07:00 --> 2009-06-15T13:45:30.0000000-07:00
Module Example
    Public Sub Main()
        Dim dat As New Date(2009, 6, 15, 13, 45, 30,
                            DateTimeKind.Unspecified)
        Console.WriteLine("{0} ({1}) --> {0:O}", dat, dat.Kind)

        Dim uDat As New Date(2009, 6, 15, 13, 45, 30, DateTimeKind.Utc)
        Console.WriteLine("{0} ({1}) --> {0:O}", uDat, uDat.Kind)

        Dim lDat As New Date(2009, 6, 15, 13, 45, 30, DateTimeKind.Local)
        Console.WriteLine("{0} ({1}) --> {0:O}", lDat, lDat.Kind)
        Console.WriteLine()

        Dim dto As New DateTimeOffset(lDat)
        Console.WriteLine("{0} --> {0:O}", dto)
    End Sub
End Module
' The example displays the following output:
'    6/15/2009 1:45:30 PM (Unspecified) --> 2009-06-15T13:45:30.0000000
'    6/15/2009 1:45:30 PM (Utc) --> 2009-06-15T13:45:30.0000000Z
'    6/15/2009 1:45:30 PM (Local) --> 2009-06-15T13:45:30.0000000-07:00
'    
'    6/15/2009 1:45:30 PM -07:00 --> 2009-06-15T13:45:30.0000000-07:00

次の例では、"o" 書式指定子を使用して書式設定された文字列を作成し、日付および時刻の Parse メソッドを呼び出して元の日時値を復元します。

// Round-trip DateTime values.
DateTime originalDate, newDate;
string dateString;
// Round-trip a local time.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 10, 6, 30, 0), DateTimeKind.Local);
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind,
                  newDate, newDate.Kind);
// Round-trip a UTC time.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 12, 9, 30, 0), DateTimeKind.Utc);
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind,
                  newDate, newDate.Kind);
// Round-trip time in an unspecified time zone.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 13, 12, 30, 0), DateTimeKind.Unspecified);
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind,
                  newDate, newDate.Kind);

// Round-trip a DateTimeOffset value.
DateTimeOffset originalDTO = new DateTimeOffset(2008, 4, 12, 9, 30, 0, new TimeSpan(-8, 0, 0));
dateString = originalDTO.ToString("o");
DateTimeOffset newDTO = DateTimeOffset.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} to {1}.", originalDTO, newDTO);
// The example displays the following output:
//    Round-tripped 4/10/2008 6:30:00 AM Local to 4/10/2008 6:30:00 AM Local.
//    Round-tripped 4/12/2008 9:30:00 AM Utc to 4/12/2008 9:30:00 AM Utc.
//    Round-tripped 4/13/2008 12:30:00 PM Unspecified to 4/13/2008 12:30:00 PM Unspecified.
//    Round-tripped 4/12/2008 9:30:00 AM -08:00 to 4/12/2008 9:30:00 AM -08:00.
' Round-trip DateTime values.
Dim originalDate, newDate As Date
Dim dateString As String
' Round-trip a local time.
originalDate = Date.SpecifyKind(#4/10/2008 6:30AM#, DateTimeKind.Local)
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
                  newDate, newDate.Kind)
' Round-trip a UTC time.
originalDate = Date.SpecifyKind(#4/12/2008 9:30AM#, DateTimeKind.Utc)
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
                  newDate, newDate.Kind)
' Round-trip time in an unspecified time zone.
originalDate = Date.SpecifyKind(#4/13/2008 12:30PM#, DateTimeKind.Unspecified)
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
                  newDate, newDate.Kind)

' Round-trip a DateTimeOffset value.
Dim originalDTO As New DateTimeOffset(#4/12/2008 9:30AM#, New TimeSpan(-8, 0, 0))
dateString = originalDTO.ToString("o")
Dim newDTO As DateTimeOffset = DateTimeOffset.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} to {1}.", originalDTO, newDTO)
' The example displays the following output:
'    Round-tripped 4/10/2008 6:30:00 AM Local to 4/10/2008 6:30:00 AM Local.
'    Round-tripped 4/12/2008 9:30:00 AM Utc to 4/12/2008 9:30:00 AM Utc.
'    Round-tripped 4/13/2008 12:30:00 PM Unspecified to 4/13/2008 12:30:00 PM Unspecified.
'    Round-tripped 4/12/2008 9:30:00 AM -08:00 to 4/12/2008 9:30:00 AM -08:00.

表のトップへ

RFC1123 ("R"、"r") 書式指定子

"R" または "r" 標準書式指定子は、DateTimeFormatInfo.RFC1123Pattern プロパティで定義されるカスタム日付および時刻の書式指定文字列を表します。 このパターンは定義済みの標準を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'" です。 この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。

結果文字列は、インバリアント カルチャを表す DateTimeFormatInfo プロパティによって返される DateTimeFormatInfo.InvariantInfo オブジェクトの次のプロパティに影響されます。

プロパティ 説明
RFC1123Pattern 結果文字列の書式を定義します。
AbbreviatedDayNames 結果文字列に含まれる日付の省略名を定義します。
AbbreviatedMonthNames 結果文字列に含まれる月の省略名を定義します。

RFC 1123 標準では、時刻は世界協定時刻 (UTC: Coordinated Universal Time) で表されますが、書式設定操作では、書式設定される DateTime オブジェクトの値が変更されません。 そのため、書式設定操作を行う前に DateTime メソッドを呼び出して、DateTime.ToUniversalTime 値を UTC に変換する必要があります。 一方、DateTimeOffset 値は、この変換を自動的に行います。書式設定操作の前に DateTimeOffset.ToUniversalTime メソッドを呼び出す必要はありません。

次の例では、米国のシステム上で "r" 書式指定子を使用して、DateTime 値および DateTimeOffset 値を表示しています。表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1,
                            TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(date1.ToUniversalTime().ToString("r"));
// Displays Thu, 10 Apr 2008 13:30:00 GMT
Console.WriteLine(dateOffset.ToUniversalTime().ToString("r"));
// Displays Thu, 10 Apr 2008 13:30:00 GMT
Dim date1 As Date = #4/10/2008 6:30AM#
Dim dateOffset As New DateTimeOffset(date1, TimeZoneInfo.Local.GetUtcOFfset(date1))
Console.WriteLine(date1.ToUniversalTime.ToString("r"))
' Displays Thu, 10 Apr 2008 13:30:00 GMT                       
Console.WriteLine(dateOffset.ToUniversalTime.ToString("r"))
' Displays Thu, 10 Apr 2008 13:30:00 GMT                        

表のトップへ

並べ替え可能な日付と時刻 ("s") 書式指定子

"s" 標準書式指定子は、DateTimeFormatInfo.SortableDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準 (ISO 8601) を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"yyyy'-'MM'-'dd'T'HH':'mm':'ss" です。

"s" 書式指定子の目的は、日付と時刻の値に基づいて、一貫して昇順または降順で並べ替える結果の文字列を作成することです。 そのため、"s" 標準書式指定子は一貫性のある形式での日付と時刻の値を表していますが、書式設定操作によって、書式設定の対象となる日付と時刻のオブジェクトの値が DateTime.Kind プロパティやその DateTimeOffset.Offset 値を反映するように変更されることはありません。 たとえば、日付と時刻値の 2014-11-15T18:32:17+00:00 と 2014-11-15T18:32:17+08:00 を書式設定することで生成される結果文字列は同じになります。

この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。

次の例では、米国のシステム上で "s" 書式指定子を使用して、DateTime 値および DateTimeOffset 値を表示しています。表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("s"));
// Displays 2008-04-10T06:30:00
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("s"))
' Displays 2008-04-10T06:30:00                       

表のトップへ

世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子

"u" 標準書式指定子は、DateTimeFormatInfo.UniversalSortableDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"yyyy'-'MM'-'dd HH':'mm':'ss'Z'" です。 この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。

結果文字列では、時刻は世界協定時刻 (UTC) で表される必要がありますが、書式設定操作では、元の DateTime 値の変換は実行されません。 そのため、書式設定する前に DateTime メソッドを呼び出して、DateTime.ToUniversalTime 値を UTC に変換する必要があります。 一方、DateTimeOffset 値では、この変換が自動的に行われます。書式設定操作の前に DateTimeOffset.ToUniversalTime メソッドを呼び出す必要はありません。

次の例では、"u" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToUniversalTime().ToString("u"));
// Displays 2008-04-10 13:30:00Z
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToUniversalTime.ToString("u"))
' Displays 2008-04-10 13:30:00Z                       

表のトップへ

世界共通の完全な日付と時刻 ("U") 書式指定子

"U" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.FullDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは、"F" パターンと同じです。 ただし、DateTime 値は、書式設定される前に、自動的に UTC に変換されます。

返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの FullDateTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。

プロパティ 説明
FullDateTimePattern 結果文字列の全体的な書式を定義します。
DayNames 結果文字列に含まれるローカライズされた日付の名前を定義します。
MonthNames 結果文字列に含まれるローカライズされた月の名前を定義します。
TimeSeparator 時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。
AMDesignator 午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。
PMDesignator 正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。

"U" 書式指定子は、DateTimeOffset 型ではサポートされません。この書式指定子を使って FormatException 値の書式を設定しようとすると、DateTimeOffset がスローされます。

次の例では、"U" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("U",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 1:30:00 PM
Console.WriteLine(date1.ToString("U",
                  CultureInfo.CreateSpecificCulture("sv-FI")));
// Displays den 10 april 2008 13:30:00
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 1:30:00 PM                       
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("sv-FI")))
' Displays den 10 april 2008 13:30:00                       

表のトップへ

時刻の形式

このグループには、次の形式が含まれます。

短い形式の時刻 ("t") 書式指定子

"t" 標準書式指定子は、現在の DateTimeFormatInfo.ShortTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "HH:mm" です。

結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.ShortTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。

プロパティ 説明
ShortTimePattern 結果文字列の時刻要素の書式を定義します。
TimeSeparator 時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。
AMDesignator 午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。
PMDesignator 正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。

次の例では、"t" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("t",
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 6:30 AM
Console.WriteLine(date1.ToString("t",
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays 6:30
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("t", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 6:30 AM                        
Console.WriteLine(date1.ToString("t", _
                  CultureInfo.CreateSpecificCulture("es-ES")))
' Displays 6:30                      

表のトップへ

長い形式の時刻 ("T") 書式指定子

"T" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.LongTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "HH:mm:ss" です。

返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.LongTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。

プロパティ 説明
LongTimePattern 結果文字列の時刻要素の書式を定義します。
TimeSeparator 時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。
AMDesignator 午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。
PMDesignator 正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。

次の例では、"T" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("T",
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 6:30:00 AM
Console.WriteLine(date1.ToString("T",
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays 6:30:00
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("T", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 6:30:00 AM                       
Console.WriteLine(date1.ToString("T", _
                  CultureInfo.CreateSpecificCulture("es-ES")))
' Displays 6:30:00                      

表のトップへ

部分的な日付形式

このグループには、次の形式が含まれます。

月 ("M"、"m") 書式指定子

"M" または "m" 標準書式指定子は、現在の DateTimeFormatInfo.MonthDayPattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "MMMM dd" です。

返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。

プロパティ 説明
MonthDayPattern 結果文字列の全体的な書式を定義します。
MonthNames 結果文字列に含まれるローカライズされた月の名前を定義します。

次の例では、"m" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("m",
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays April 10
Console.WriteLine(date1.ToString("m",
                  CultureInfo.CreateSpecificCulture("ms-MY")));
// Displays 10 April
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("m", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays April 10                        
Console.WriteLine(date1.ToString("m", _
                  CultureInfo.CreateSpecificCulture("ms-MY")))
' Displays 10 April                       

表のトップへ

年月 ("Y"、"y") 書式指定子

"Y" または "y" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.YearMonthPattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "yyyy MMMM" です。

返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。

プロパティ 説明
YearMonthPattern 結果文字列の全体的な書式を定義します。
MonthNames 結果文字列に含まれるローカライズされた月の名前を定義します。

次の例では、"y" 書式指定子を使用して、日付と時刻の値を表示します。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("Y",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays April, 2008
Console.WriteLine(date1.ToString("y",
                  CultureInfo.CreateSpecificCulture("af-ZA")));
// Displays April 2008
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("Y", CultureInfo.CreateSpecificCulture("en-US")))
' Displays April, 2008                       
Console.WriteLine(date1.ToString("y", CultureInfo.CreateSpecificCulture("af-ZA")))
' Displays April 2008                       

表のトップへ

コントロール パネルの設定

Windows のコントロール パネルの [地域と言語のオプション] での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のカルチャに関連付けられた DateTimeFormatInfo オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。

また、 CultureInfo(String) コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい CultureInfo オブジェクトをインスタンス化した場合、コントロール パネルの [地域と言語のオプション] 項目で設定されたカスタマイズが新しい CultureInfo オブジェクトに適用されます。 CultureInfo(String, Boolean) コンストラクターを使用すると、システムに対するカスタマイズが反映されない CultureInfo オブジェクトを作成できます。

DateTimeFormatInfo のプロパティ

書式設定は、現在の DateTimeFormatInfo オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のカルチャによって暗黙的に指定されるか、または書式設定を呼び出すメソッドの IFormatProvider パラメーターによって明示的に指定されます。 IFormatProvider パラメーターには、カルチャを表す CultureInfo オブジェクトを指定するか、特定のカルチャの日時書式設定規則を表す DateTimeFormatInfo オブジェクトを指定する必要があります。 標準日時書式指定子の多くは、現在の DateTimeFormatInfo オブジェクトのプロパティによって定義されている書式設定パターンのエイリアスです。 標準日時書式指定子によって生成される結果は、対応する DateTimeFormatInfo プロパティの、対応する日時形式パターンを変更することによって変えることができます。

関連項目