標準の日付と時刻の書式指定文字列
更新 : 2010 年 7 月
標準の日時書式指定文字列は、単一の書式指定子を使用して日付と時刻の値のテキスト表現を定義します。 空白を含む複数の文字で構成される日時書式指定文字列は、カスタム日時書式指定文字列として解釈されます。詳細については、「カスタムの日付と時刻の書式指定文字列」を参照してください。 標準またはカスタムの書式指定文字列には、次の 2 とおりの使用方法があります。
書式設定操作によって生成される文字列を定義する。
解析操作によって DateTime 値または DateTimeOffset 値に変換できる日付と時刻の値のテキスト表現を定義する。
標準の日時書式指定文字列は、DateTime 値で使用することも、DateTimeOffset 値で使用することもできます。
![]() |
---|
書式指定ユーティリティをダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。 |
標準日時書式指定子を次の表に示します。 特に明記されない限り、特定の標準日時書式指定子は、DateTime 値で使用しても、DateTimeOffset 値で使用してもまったく同じ文字列形式を生成します。 標準の日時書式指定文字列の使用方法については、「メモ」を参照してください。
書式指定子 |
説明 |
例 |
---|---|---|
"d" |
短い形式の日付パターン。 詳細については、「短い形式の日付 ("d") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 6/15/2009 (en-US) 6/15/2009 1:45:30 PM -> 15/06/2009 (fr-FR) 6/15/2009 1:45:30 PM -> 2009/06/15 (ja-JP) |
"D" |
長い形式の日付パターン。 詳細については、「長い形式の日付 ("D") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> Monday, June 15, 2009 (en-US) 6/15/2009 1:45:30 PM -> 15 июня 2009 г. (ru-RU) 6/15/2009 1:45:30 PM -> Montag, 15. Juni 2009 (de-DE) |
"f" |
完全な日付と時刻のパターン (短い形式の時刻)。 詳細については、「完全な日付と短い形式の時刻 ("f") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> Monday, June 15, 2009 1:45 PM (en-US) 6/15/2009 1:45:30 PM -> den 15 juni 2009 13:45 (sv-SE) 6/15/2009 1:45:30 PM -> Δευτέρα, 15 Ιουνίου 2009 1:45 μμ (el-GR) |
"F" |
完全な日付と時刻のパターン (長い形式の時刻)。 詳細については、「完全な日付と長い形式の時刻 ("F") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> Monday, June 15, 2009 1:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> den 15 juni 2009 13:45:30 (sv-SE) 6/15/2009 1:45:30 PM -> Δευτέρα, 15 Ιουνίου 2009 1:45:30 μμ (el-GR) |
"g" |
一般の日付と時刻のパターン (短い形式の時刻)。 詳細については、「一般の日付と短い形式の時刻 ("g") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 6/15/2009 1:45 PM (en-US) 6/15/2009 1:45:30 PM -> 15/06/2009 13:45 (es-ES) 6/15/2009 1:45:30 PM -> 2009/6/15 13:45 (zh-CN) |
"G" |
一般の日付と時刻のパターン (長い形式の時刻)。 詳細については、「一般の日付と長い形式の時刻 ("G") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 6/15/2009 1:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> 15/06/2009 13:45:30 (es-ES) 6/15/2009 1:45:30 PM -> 2009/6/15 13:45:30 (zh-CN) |
"M"、"m" |
月日パターン。 詳細については、「月 ("M"、"m") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> June 15 (en-US) 6/15/2009 1:45:30 PM -> 15. juni (da-DK) 6/15/2009 1:45:30 PM -> 15 Juni (id-ID) |
"O"、"o" |
ラウンドトリップする日付と時刻のパターン。 詳細については、「ラウンドトリップ ("O"、"o") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 2009-06-15T13:45:30.0900000 |
"R"、"r" |
RFC1123 パターン。 詳細については、「RFC1123 ("R"、"r") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> Mon, 15 Jun 2009 20:45:30 GMT |
"s" |
並べ替え可能な日付と時刻のパターン。 詳細については、「並べ替え可能な日付と時刻 ("s") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 2009-06-15T13:45:30 |
"t" |
短い形式の時刻パターン。 詳細については、「短い形式の時刻 ("t") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 1:45 PM (en-US) 6/15/2009 1:45:30 PM -> 13:45 (hr-HR) 6/15/2009 1:45:30 PM -> 01:45 م (ar-EG) |
"T" |
長い形式の時刻パターン。 詳細については、「長い形式の時刻 ("T") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 1:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> 13:45:30 (hr-HR) 6/15/2009 1:45:30 PM -> 01:45:30 م (ar-EG) |
"u" |
並べ替え可能な日付と時刻のパターン (世界時刻)。 詳細については、「世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> 2009-06-15 20:45:30Z |
"U" |
完全な日付と時刻のパターン (世界時刻)。 詳細については、「世界共通の完全な日付と時刻 ("U") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> Monday, June 15, 2009 8:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> den 15 juni 2009 20:45:30 (sv-SE) 6/15/2009 1:45:30 PM -> Δευτέρα, 15 Ιουνίου 2009 8:45:30 μμ (el-GR) |
"Y"、"y" |
年月パターン。 詳細については、「年月 ("Y") 書式指定子」を参照してください。 |
6/15/2009 1:45:30 PM -> June, 2009 (en-US) 6/15/2009 1:45:30 PM -> juni 2009 (da-DK) 6/15/2009 1:45:30 PM -> 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 Dim thisDate As Date = #03/15/2008# Console.WriteLine(thisDate.ToString("d")) ' Displays 3/15/2008
// 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
使用する書式のカルチャを表す CultureInfo オブジェクトを、IFormatProvider パラメーターを持つメソッドに渡すことができます。 次の例では、pt-BR カルチャの短い日付形式を使って日付を表示します。
' 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
// 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
書式情報を提供する DateTimeFormatInfo オブジェクトを、IFormatProvider パラメーターを持つメソッドに渡すことができます。 次の例では、hr-HR カルチャの DateTimeFormatInfo オブジェクトに基づく短い日付形式で日付を表示します。
' 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
// 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
標準書式指定文字列には、長いカスタム書式指定文字列に代わる、不変の省略形としての利用価値もあります。 このカテゴリに該当する標準書式指定文字列は、"O" (または "o")、"R" (または "r")、"s"、"u" の 4 つです。 これらの文字列は、インバリアント カルチャで定義されたカスタム書式指定文字列に対応します。 これらの書式指定文字列によって生成される日時値の文字列形式は、カルチャに関係なく一定です。 次の表で、この 4 つの標準日時書式指定文字列について説明します。
標準書式指定文字列 |
DateTimeFormatInfo.InvariantInfo プロパティによる定義 |
カスタム書式指定文字列 |
---|---|---|
"O" または "o" |
なし |
yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzz |
"R" または "r" |
ddd, dd MMM yyyy HH':'mm':'ss 'GMT' |
|
"s" |
yyyy'-'MM'-'dd'T'HH':'mm':'ss |
|
"u" |
yyyy'-'MM'-'dd HH':'mm':'ss'Z' |
標準書式指定文字列は、解析操作の DateTime.ParseExact メソッドまたは DateTimeOffset.ParseExact メソッドで使用することもできます。これらのメソッドでは、解析操作が成功するための特定のパターンに入力文字列が完全に一致している必要があります。 標準書式指定文字列の多くは複数のカスタム書式指定文字列に対応付けられるため、日付と時刻の値はさまざまな書式で表されることがありますが、解析操作は成功します。 DateTimeFormatInfo.GetAllDateTimePatterns(Char) メソッドを呼び出すことにより、標準書式指定文字列に対応する 1 つまたは複数のカスタム書式指定文字列を確認できます。 次の例では、"d" (短い日付形式のパターン) 標準書式指定文字列に対応付けられているカスタム書式指定文字列を表示します。
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
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
以降では、DateTime 値および DateTimeOffset 値の標準書式指定子について説明します。
短い形式の日付 ("d") 書式指定子
"d" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.ShortDatePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャの ShortDatePattern プロパティによって返されるカスタム書式指定文字列は "MM/dd/yyyy" です。
返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。
プロパティ |
説明 |
---|---|
結果文字列の全体的な書式を定義します。 |
|
日付の構成要素、つまり年、月、および日を区切る文字列を定義します。 |
次の例では、"d" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
長い形式の日付 ("D") 書式指定子
"D" 標準書式指定子は、現在の DateTimeFormatInfo.LongDatePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "dddd, dd MMMM yyyy" です。
返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。
プロパティ |
説明 |
---|---|
結果文字列の全体的な書式を定義します。 |
|
結果文字列に含まれるローカライズされた日付の名前を定義します。 |
|
結果文字列に含まれるローカライズされた月の名前を定義します。 |
次の例では、"D" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
完全な日付と短い形式の時刻 ("f") 書式指定子
"f" 標準書式指定子は、長い形式の日付 ("D") パターンと短い形式の時刻 ("t") パターンを空白で区切って組み合わせて表します。
結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.LongDatePattern プロパティおよび DateTimeFormatInfo.ShortTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。
プロパティ |
説明 |
---|---|
結果文字列の日付要素の書式を定義します。 |
|
結果文字列の時刻要素の書式を定義します。 |
|
結果文字列に含まれるローカライズされた日付の名前を定義します。 |
|
結果文字列に含まれるローカライズされた月の名前を定義します。 |
|
時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。 |
|
午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。 |
|
正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。 |
次の例では、"f" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
完全な日付と長い形式の時刻 ("F") 書式指定子
"F" 標準書式指定子は、現在の DateTimeFormatInfo.FullDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "dddd, dd MMMM yyyy HH:mm:ss" です。
返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの FullDateTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。
プロパティ |
説明 |
---|---|
結果文字列の全体的な書式を定義します。 |
|
結果文字列に含まれるローカライズされた日付の名前を定義します。 |
|
結果文字列に含まれるローカライズされた月の名前を定義します。 |
|
時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。 |
|
午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。 |
|
正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。 |
次の例では、"F" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
一般の日付と短い形式の時刻 ("g") 書式指定子
"g" 標準書式指定子は、短い形式の日付 ("d") パターンと短い形式の時刻 ("t") パターンを空白で区切って組み合わせて表します。
結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.ShortDatePattern プロパティおよび DateTimeFormatInfo.ShortTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。
プロパティ |
説明 |
---|---|
結果文字列の日付要素の書式を定義します。 |
|
結果文字列の時刻要素の書式を定義します。 |
|
日付の構成要素、つまり年、月、および日を区切る文字列を定義します。 |
|
時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。 |
|
午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。 |
|
正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。 |
次の例では、"g" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
一般の日付と長い形式の時刻 ("G") 書式指定子
"G" 標準書式指定子は、短い形式の日付 ("d") パターンと長い形式の時刻 ("T") パターンを空白で区切って組み合わせて表します。
結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.ShortDatePattern プロパティおよび DateTimeFormatInfo.LongTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。
プロパティ |
説明 |
---|---|
結果文字列の日付要素の書式を定義します。 |
|
結果文字列の時刻要素の書式を定義します。 |
|
日付の構成要素、つまり年、月、および日を区切る文字列を定義します。 |
|
時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。 |
|
午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。 |
|
正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。 |
次の例では、"G" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
月 ("M"、"m") 書式指定子
"M" または "m" 標準書式指定子は、現在の DateTimeFormatInfo.MonthDayPattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "MMMM dd" です。
返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。
プロパティ |
説明 |
---|---|
結果文字列の全体的な書式を定義します。 |
|
結果文字列に含まれるローカライズされた月の名前を定義します。 |
次の例では、"m" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
ラウンドトリップ ("O"、"o") 書式指定子
"O" または "o" 標準書式指定子は、タイム ゾーン情報を保持するパターンを使用するカスタム日時書式指定文字列を表します。 この書式指定子は、DateTime 値の日付と時刻の値を、DateTime.Kind プロパティと共にテキストとして保持できるように設計されています。 styles パラメーターが DateTimeStyles.RoundtripKind に設定されている場合は、DateTime.Parse(String, IFormatProvider, DateTimeStyles) メソッドまたは DateTime.ParseExact メソッドを使用して、書式設定された文字列を変換前の文字列に戻すことができます。
"O" または "o" 標準書式指定子は、DateTime 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列と DateTimeOffset 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" カスタム書式指定文字列に対応します。 この文字列の中で、個々の文字 (ハイフン、コロン、アルファベットの "T" など) を区切る一対の単一引用符は、各文字がリテラルであって変更できないことを示します。 アポストロフィは、出力された文字列には現れません。
この指定子のパターンは、定義済みの標準 (ISO 8601) を反映します。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 Parse メソッドまたは ParseExact メソッドに渡す文字列は、このカスタム書式パターンと完全に一致していることが必要です。一致していない場合は、FormatException がスローされます。
この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。
次の例では、米国太平洋標準時ゾーンのシステム上で "o" 書式指定子を使用し、DateTime 値および DateTimeOffset 値を表示します 。
Dim date1 As Date = #4/10/2008 6:30AM#
Dim dateOffset As New DateTimeOffset(date1, TimeZoneInfo.Local.GetUtcOFfset(date1))
Console.WriteLine(date1.ToString("o"))
' Displays 2008-04-10T06:30:00.0000000
Console.WriteLine(dateOffset.ToString("o"))
' Displays 2008-04-10T06:30:00.0000000-07:00
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1,
TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(date1.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000
Console.WriteLine(dateOffset.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000-07:00
次の例では、"o" 書式指定子を使用して書式設定された文字列を作成し、日付および時刻の Parse メソッドを呼び出して元の日時値を復元します。
' 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.
// 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.
表のトップへ
RFC1123 ("R"、"r") 書式指定子
"R" または "r" 標準書式指定子は、DateTimeFormatInfo.RFC1123Pattern プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'" です。 この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。
結果文字列は、インバリアント カルチャを表す DateTimeFormatInfo.InvariantInfo プロパティによって返される DateTimeFormatInfo オブジェクトの次のプロパティに影響されます。
プロパティ |
説明 |
---|---|
結果文字列の書式を定義します。 |
|
結果文字列に含まれる日付の省略名を定義します。 |
|
結果文字列に含まれる月の省略名を定義します。 |
RFC 1123 標準では、時刻は世界協定時刻 (UTC: Coordinated Universal Time) で表されますが、書式設定操作では、書式設定される DateTime オブジェクトまたは DateTimeOffset オブジェクトの値は変更されません。 このため、アプリケーションでは、書式設定操作を実行する前に、日時値を UTC に変換する必要があります。 この変換を実行するには、DateTime 値で DateTime.ToUniversalTime メソッドを、DateTimeOffset 値で ToUniversalTime メソッドを呼び出します。
次の例では、米国太平洋標準時ゾーンのシステム上で "r" 書式指定子を使用し、DateTime 値および DateTimeOffset 値を表示します 。
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
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
表のトップへ
並べ替え可能な日付と時刻 ("s") 書式指定子
"s" 標準書式指定子は、DateTimeFormatInfo.SortableDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準 (ISO 8601) を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"yyyy'-'MM'-'dd'T'HH':'mm':'ss" です。
この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。
次の例では、米国太平洋標準時ゾーンのシステム上で "s" 書式指定子を使用し、DateTime 値および DateTimeOffset 値を表示します 。
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("s"))
' Displays 2008-04-10T06:30:00
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("s"));
// Displays 2008-04-10T06:30:00
表のトップへ
短い形式の時刻 ("t") 書式指定子
"t" 標準書式指定子は、現在の DateTimeFormatInfo.ShortTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "HH:mm" です。
結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.ShortTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。
プロパティ |
説明 |
---|---|
結果文字列の時刻要素の書式を定義します。 |
|
時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。 |
|
午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。 |
|
正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。 |
次の例では、"t" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
長い形式の時刻 ("T") 書式指定子
"T" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.LongTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "HH:mm:ss" です。
返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの DateTimeFormatInfo.LongTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。
プロパティ |
説明 |
---|---|
結果文字列の時刻要素の書式を定義します。 |
|
時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。 |
|
午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。 |
|
正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。 |
次の例では、"T" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子
"u" 標準書式指定子は、DateTimeFormatInfo.UniversalSortableDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"yyyy'-'MM'-'dd HH':'mm':'ss'Z'" です。 この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。
結果文字列では、時刻は世界協定時刻 (UTC) で表される必要がありますが、書式設定操作では、元の DateTime 値または DateTimeOffset 値の変換は実行されません。 このため、アプリケーションでは、書式設定操作を実行する前に、日時値を UTC に変換する必要があります。 この変換を実行するには、DateTime 値で DateTime.ToUniversalTime メソッドを、DateTimeOffset 値で ToUniversalTime メソッドを呼び出します。
次の例では、"u" 書式指定子を使用して、日付と時刻の値を表示します。
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToUniversalTime.ToString("u"))
' Displays 2008-04-10 13:30:00Z
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToUniversalTime().ToString("u"));
// Displays 2008-04-10 13:30:00Z
表のトップへ
世界共通の完全な日付と時刻 ("U") 書式指定子
"U" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.FullDateTimePattern プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは、"F" パターンと同じです。 ただし、DateTime 値は、書式設定される前に、自動的に UTC に変換されます。
返される文字列の書式を制御できる DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの FullDateTimePattern プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。
プロパティ |
説明 |
---|---|
結果文字列の全体的な書式を定義します。 |
|
結果文字列に含まれるローカライズされた日付の名前を定義します。 |
|
結果文字列に含まれるローカライズされた月の名前を定義します。 |
|
時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。 |
|
午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。 |
|
正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。 |
"U" 書式指定子は、DateTimeOffset 型ではサポートされません。この書式指定子を使って DateTimeOffset 値の書式を設定しようとすると、FormatException がスローされます。
次の例では、"U" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
年月 ("Y"、"y") 書式指定子
"Y" または "y" 標準書式指定子は、特定のカルチャの DateTimeFormatInfo.YearMonthPattern プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "yyyy MMMM" です。
返される文字列の書式を制御する DateTimeFormatInfo オブジェクト プロパティの一覧を次の表に示します。
プロパティ |
説明 |
---|---|
結果文字列の全体的な書式を定義します。 |
|
結果文字列に含まれるローカライズされた月の名前を定義します。 |
次の例では、"y" 書式指定子を使用して、日付と時刻の値を表示します。
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
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
表のトップへ
メモ
コントロール パネルの設定
コントロール パネルの [地域と言語のオプション] での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のスレッド カルチャに関連付けられた DateTimeFormatInfo オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。
また、CultureInfo.CultureInfo(String) コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい CultureInfo オブジェクトをインスタンス化した場合、コントロール パネルの [地域と言語のオプション] 項目で設定されたカスタマイズが新しい CultureInfo オブジェクトに適用されます。 CultureInfo.CultureInfo(String, Boolean) コンストラクターを使用すると、システムに対するカスタマイズが反映されない CultureInfo オブジェクトを作成できます。
DateTimeFormatInfo のプロパティ
書式設定は、現在の DateTimeFormatInfo オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの IFormatProvider パラメーターによって明示的に指定されます。 IFormatProvider パラメーターには、カルチャを表す CultureInfo オブジェクトを指定するか、特定のカルチャの日時書式設定規則を表す DateTimeFormatInfo オブジェクトを指定する必要があります。 標準日時書式指定子の多くは、現在の DateTimeFormatInfo オブジェクトのプロパティによって定義されている書式設定パターンのエイリアスです。 標準日時書式指定子によって生成される結果は、対応する DateTimeFormatInfo プロパティの、対応する日時形式パターンを変更することによって変えることができます。
参照
概念
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2010 年 7 月 |
解析操作の標準書式指定文字列に関する情報を追加。 |
カスタマー フィードバック |
2011 年 3 月 |
書式指定ユーティリティへのリンクを追加。 |
情報の拡充 |