標準の日時書式指定文字列では、書式指定子として 1 文字を使用して、 DateTime、 DateTimeOffset、 DateOnly、または TimeOnly 値のテキスト表現を定義します。 空白を含む複数の文字で構成される日時書式指定文字列は、カスタム日時書式指定文字列として解釈されます。 標準書式指定文字列またはカスタム書式指定文字列は、次の 2 つの方法で使用できます。
書式設定操作の結果の文字列を定義します。
解析操作によって DateTime、 DateTimeOffset、 DateOnly、または TimeOnly 値に変換できる日付と時刻の値のテキスト表現を定義します。
ヒント
書式設定ユーティリティをダウンロードできます。.NET Windows フォーム アプリケーションでは、数値または日付と時刻の値に書式指定文字列を適用し、結果文字列を表示できます。 ソース コードは、C# および Visual Basic で使用できます。
書式指定子の表
標準日時書式指定子を次の表に示します。 特に明記されていない限り、特定の標準日時書式指定子は、DateTime 値と DateTimeOffset 値のどちらで使用されるかに関係なく、同一の文字列表現を生成します。 すべての書式指定子を DateOnly 値と TimeOnly 値と共に使用できるわけではありません。詳細については、「 DateOnly および TimeOnly の書式設定」を参照してください。 Windows の地域設定と現在の DateTimeFormatInfo オブジェクトが日付と時刻の書式設定にどのように影響するかについては、「 コントロール パネルの設定 」および 「DateTimeFormatInfo プロパティ」を参照してください。
| 書式指定子 | 説明 | 例示 |
|---|---|---|
| "d" | 短い形式の日付パターン。 詳細情報:短い日付 ("d") 書式指定子。 |
2009-06-15T13:45:30 -> 2009/06/15 (en-US) 2009-06-15T13:45:30 -> 2009年06月15日 (fr-FR) 2009-06-15T13:45:30 -> 2009年06月15日 (ja-JP) DateOnly (2009-06-15) -> 2009/6/15 (en-US) |
| "D" | 長い形式の日付パターン。 詳細情報:長い日付 ("D") 書式指定子。 |
2009-06-15T13:45:30 -> 2009 年 6 月 15 日 (en-US) 2009-06-15T13:45:30 -> понедельник, 15 июня 2009 г. (ru-RU) 2009年06月15日13時45分30秒 -> 月曜日、15日。 Juni 2009 (de-DE) |
| f | 完全な日付と時刻のパターン (短い形式の時刻)。 詳細情報:完全な日付と短い形式の時刻 ("f") 書式指定子。 |
2009-06-15T13:45:30 -> 2009 年 6 月 15 日月曜日 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 -> 2009 年 6 月 15 日月曜日 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 -> 6 月 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 DateOnly 値: 2009-06-15 --> 2009-06-15 TimeOnly 値: 13:45:30 --> 13:45:30.0000000 |
| "R"、"r" | RFC1123 パターン。 詳細情報:RFC1123 ("R"、"r") 書式指定子。 |
DateTimeOffset 入力: 2009-06-15T13:45:30 -> 月、2009 年 6 月 15 日 20:45:30 GMT DateTime 入力: 2009-06-15T13:45:30 -> 月、2009 年 6 月 15 日 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 (en-US) 2009-06-15T13:45:30 -> 13:45 (hr-HR) 2009-06-15T13:45:30 -> 01:45 م (ar-EG) TimeOnly (13:45:30) -> 1:45 PM (en-US) |
| "T" | 長い形式の時刻パターン。 詳細情報:長い形式の時刻 ("T") 書式指定子。 |
2009-06-15T13:45:30 -> 午後1時45分30秒 (en-US) 2009-06-15T13:45:30 -> 13:45:30 (hr-HR) 2009-06-15T13:45:30 -> 01:45:30 م (ar-EG) TimeOnly (13:45:30) -> 1:45:30 PM (en-US) |
| "u" | 並べ替え可能な日付と時刻のパターン (世界時刻)。 詳細情報:世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子。 |
DateTime 値: 2009-06-15T13:45:30 -> 2009-06-15 13:45:30Z DateTimeOffset 値: 2009-06-15T13:45:30 -> 2009-06-15 20:45:30Z |
| "U" | ユニバーサル完全な日付/時刻パターン。 詳細情報: ユニバーサル フル ("U") 書式指定子。 |
2009-06-15T13:45:30 -> 2009 年 6 月 15 日月曜日 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 -> 2009 年 6 月 (en-US) 2009-06-15T13:45:30 -> 2009年6月 (da-DK) 2009-06-15T13:45:30 -> 2009年6月 (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/2008CultureInfo パラメーターを持つメソッドに書式設定を使用するカルチャを表す 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/2008DateTimeFormatInfo パラメーターを持つメソッドに書式設定情報を提供する 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" | なし | 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、 DateOnly.ParseExact、および TimeOnly.ParseExact メソッドを使用した解析操作にも使用できます。このメソッドでは、解析操作を成功させるために、入力文字列が特定のパターンに正確に準拠する必要があります。 多くの標準書式指定文字列は複数のカスタム書式指定文字列にマップされるため、日付と時刻の値をさまざまな形式で表すことができますが、解析操作は引き続き成功します。 DateTimeFormatInfo.GetAllDateTimePatterns(Char) メソッドを呼び出すことで、標準書式指定文字列に対応するカスタム書式指定文字列を特定できます。 次の例では、"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($" {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、 DateOnly、および TimeOnly 値の標準書式指定子について説明します。
日付の形式
このグループには、次の形式が含まれます。
短い形式の日付 ("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") 書式指定子
- 一般の日付と短い形式の時刻 ("g") 書式指定子
- 一般の日付と長い形式の時刻 ("G") 書式指定子
- ラウンドトリップ ("O"、"o") 書式指定子
- RFC1123 ("R"、"r") 書式指定子
- 並べ替え可能な日付と時刻 ("s") 書式指定子
- 世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子
- 汎用完全 ("U") 書式指定子
完全な日付と短い形式の時刻 ("f") 書式指定子
"f" 標準書式指定子は、長い形式の日付 ("D") パターンと短い形式の時刻 ("t") パターンを空白で区切って組み合わせて表します。
結果文字列は、特定の DateTimeFormatInfo オブジェクトの書式設定情報の影響を受けます。 次の表に、返される文字列の書式設定を制御できる DateTimeFormatInfo オブジェクトプロパティを示します。 一部のカルチャの DateTimeFormatInfo.LongDatePattern プロパティと DateTimeFormatInfo.ShortTimePattern プロパティによって返されるカスタム書式指定子では、すべてのプロパティが使用されない場合があります。
| プロパティ | 説明 |
|---|---|
| LongDatePattern | 結果文字列の日付コンポーネントの形式を定義します。 |
| ShortTimePattern | 結果文字列の時刻コンポーネントの形式を定義します。 |
| DayNames | 結果文字列に表示できるローカライズされた日の名前を定義します。 |
| MonthNames | 結果文字列に表示できるローカライズされた月の名前を定義します。 |
| TimeSeparator | 時刻の時間、分、および 2 番目の要素を区切る文字列を定義します。 |
| 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 | 時刻の時間、分、および 2 番目の要素を区切る文字列を定義します。 |
| 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 | 時刻の時間、分、および 2 番目の要素を区切る文字列を定義します。 |
| 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 | 時刻の時間、分、および 2 番目の要素を区切る文字列を定義します。 |
| 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 メソッドを使用して書式設定された文字列を解析できます。
DateOnly値の場合、この書式指定子は日付のみの ISO 8601 文字列を "yyyy-MM-dd" という形式で生成します。 TimeOnly値の場合、"HH:mm:ss.fffffff" という形式の時刻のみの ISO 8601 文字列が生成されます。
"O" または "o" 標準書式指定子は、"yyyy'-'MM'-'dd'T'HH':'mm':'ss' に対応します。fffffffK" カスタム書式指定文字列 (DateTime 値および "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'DateTimeOffset 値の fffffffzzz" カスタム書式指定文字列。 この文字列では、ハイフン、コロン、文字 "T" など、個々の文字を区切る単一引用符のペアは、個々の文字が変更できないリテラルであることを示します。 アポストロフィは出力文字列に表示されません。
"O" または "o" 標準書式指定子 (および "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列) は、ISO 8601 がタイム ゾーン情報を表す 3 つの方法を利用して、Kind 値の DateTime プロパティを保持します。
DateTimeKind.Local 日時値のタイム ゾーン コンポーネントは、UTC からのオフセットです (たとえば、+01:00、-07:00)。 すべての DateTimeOffset 値もこの形式で表されます。
DateTimeKind.Utc の日付と時刻の値のタイム ゾーン コンポーネントでは、UTC を表すために "Z" (ゼロ オフセットを表す) が使用されます。
DateTimeKind.Unspecified 日付と時刻の値にはタイム ゾーン情報がありません。
"O" または "o" 標準書式指定子は国際基準に準拠しているため、この指定子を使用する書式設定操作または解析操作では常に、インバリアント カルチャとグレゴリオ暦が使用されます。
Parse、TryParse、ParseExact、およびTryParseExactのDateTime、DateTimeOffset、DateOnly、およびTimeOnlyメソッドに渡される文字列は、これらの形式のいずれかに含まれている場合は、"O" または "o" 書式指定子を使用して解析できます。
DateTime オブジェクトの場合、呼び出す解析オーバーロードには、値が stylesの DateTimeStyles.RoundtripKind パラメーターも含まれている必要があります。 "O" または "o" 書式指定子に対応するカスタム書式指定文字列を使用して解析メソッドを呼び出した場合、"O" または "o" と同じ結果が得られないことに注意してください。 これは、カスタム書式指定文字列を使用する解析メソッドでは、タイム ゾーン コンポーネントがない日付と時刻の値の文字列形式を解析したり、UTC を示すために "Z" を使用したりできないためです。
次の例では、"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($"{dat} ({dat.Kind}) --> {dat:O}");
DateTime uDat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Utc);
Console.WriteLine($"{uDat} ({uDat.Kind}) --> {uDat:O}");
DateTime lDat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Local);
Console.WriteLine($"{lDat} ({lDat.Kind}) --> {lDat:O}\n");
DateTimeOffset dto = new DateTimeOffset(lDat);
Console.WriteLine($"{dto} --> {dto:O}");
}
}
// 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 {originalDate} {originalDate.Kind} to {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 {originalDate} {originalDate.Kind} to {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 {originalDate} {originalDate.Kind} to {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 {originalDTO} to {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) として表されますが、書式設定操作では、書式設定されている 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 | 時刻の時間、分、および 2 番目の要素を区切る文字列を定義します。 |
| 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 | 時刻の時間、分、および 2 番目の要素を区切る文字列を定義します。 |
| 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 | 時刻の時間、分、および 2 番目の要素を区切る文字列を定義します。 |
| 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
DateOnly と TimeOnly の書式設定
DateOnly および TimeOnly 型は、標準の日時書式指定文字列のサブセットをサポートします。
DateOnly では、日付関連の書式指定子がサポートされています。
- "d" (短い日付)、"D" (長い日付)
- "M" または "m" (月/日)
- "Y" または "y" (年/月)
- "O" または "o" (ラウンドトリップ、日付部分のみ)
- "R" または "r" (RFC1123、日付部分のみ)
TimeOnly では、時刻関連の書式指定子がサポートされています。
- "t" (短い時間)、"T" (長い時間)
- "O" または "o" (ラウンドトリップ、時間部分のみ)
- "R" または "r" (RFC1123、時刻部分のみ)
日付と時刻の両方の情報 ("f"、"F"、"g"、"G"、"s"、"u"、"U") を組み合わせた書式指定子は、FormatExceptionまたはDateOnlyで使用すると、TimeOnlyをスローします。
コントロール パネルの設定
Windows では、[コントロール パネル] の [地域と言語のオプション] 項目の設定は、書式設定操作によって生成される結果文字列に影響します。 これらの設定は、現在のカルチャに関連付けられている DateTimeFormatInfo オブジェクトを初期化するために使用され、書式設定の制御に使用される値が提供されます。 異なる設定を使用するコンピューターでは、異なる結果文字列が生成されます。
さらに、CultureInfo(String) コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい CultureInfo オブジェクトをインスタンス化する場合は、コントロール パネルの Regional and Language Options 項目によって確立されたすべてのカスタマイズが新しい CultureInfo オブジェクトに適用されます。 CultureInfo(String, Boolean) コンストラクターを使用して、システムのカスタマイズを反映しない CultureInfo オブジェクトを作成できます。
DateTimeFormatInfo プロパティ
書式設定は、現在の DateTimeFormatInfo オブジェクトのプロパティによって影響を受けます。これは、現在のカルチャによって暗黙的に提供されるか、書式設定を呼び出すメソッドの IFormatProvider パラメーターによって明示的に提供されます。 IFormatProvider パラメーターには、カルチャを表す CultureInfo オブジェクト、または特定のカルチャの日付と時刻の書式設定規則を表す DateTimeFormatInfo オブジェクトを指定する必要があります。 標準の日時書式指定子の多くは、現在の DateTimeFormatInfo オブジェクトのプロパティによって定義される書式設定パターンのエイリアスです。 アプリケーションでは、対応する DateTimeFormatInfo プロパティの対応する日付と時刻の書式パターンを変更することで、一部の標準日時書式指定子によって生成される結果を変更できます。
こちらもご覧ください
.NET