Share via


カスタムの日付と時刻の書式指定文字列

更新 : 2007 年 11 月

カスタム日時書式指定文字列は、DateTime 値または DateTimeOffset 値の書式設定操作によって生成されるテキスト表現を定義します。カスタム書式指定文字列は、1 つまたは複数のカスタム日時書式指定子から成ります。標準の日時書式指定文字列以外の文字列は、すべてカスタム日時書式指定文字列として解釈されます。

注意   標準の日時書式指定文字列は、DateTime 値で使用することも、DateTimeOffset 値で使用することもできます。

カスタム日時書式指定子

カスタム日時書式指定子を次の表に示します。特に明記されない限り、特定のカスタム日時書式指定子は、DateTime 値で使用しても、DateTimeOffset 値で使用してもまったく同じ文字列形式を生成します。

書式指定子

説明

d

月の日にちを 1 ~ 31 の数値として表します。1 桁の日にちは、先行ゼロなしで書式設定されます。単一のカスタム書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

次の例では、複数の書式指定文字列の中に d カスタム書式指定子が含まれます。

dd

月の日にちを 01 ~ 31 の数値として表します。1 桁の日にちは、先行ゼロ付きで書式設定されます。次の例では、カスタム書式指定文字列の中に dd カスタム書式指定子が含まれます。

ddd

現在の DateTimeFormatInfo.AbbreviatedDayNames プロパティで定義されている曜日の省略名を表します。次の例では、カスタム書式指定文字列の中に ddd カスタム書式指定子が含まれます。

dddd (任意の数の d 指定子を追加可能)

現在の DateTimeFormatInfo.DayNames プロパティで定義されている曜日の完全な名前を表します。次の例では、カスタム書式指定文字列の中に dddd カスタム書式指定子が含まれます。

f

秒の端数の最上位桁 (つまり、日時値の秒部分の 1/10) を表します。

f 書式指定子が単独で使用され、その他の書式指定子がない場合、f は標準の日時書式指定子として解釈されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

ParseExactTryParseExactParseExactTryParseExact のいずれかのメソッドに渡す書式指定文字列の一部として使用された場合、使用された f 書式指定子の数は、文字列を正しく解析するために、秒の端数の最上位桁数が何桁存在している必要があるかを表します。

次の例では、カスタム書式指定文字列の中に f カスタム書式指定子が含まれます。

ff

秒の端数の最上位 2 桁 (つまり、日時値の秒部分の 1/100) を表します。次の例では、カスタム書式指定文字列の中に ff カスタム書式指定子が含まれます。

fff

秒の端数の最上位 3 桁 (つまり、日時値の秒部分の 1/1000) を表します。次の例では、カスタム書式指定文字列の中に fff カスタム書式指定子が含まれます。

ffff

秒の端数の最上位 4 桁 (つまり、日時値の秒部分の 1/10000) を表します。

時刻値の 1/10000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

fffff

秒の端数の最上位 5 桁 (つまり、日時値の秒部分の 1/100000) を表します。

時刻値の 1/100000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

ffffff

秒の端数の最上位 6 桁 (つまり、日時値の秒部分の 1/1000000) を表します。

時刻値の 1/1000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

fffffff

秒の端数の最上位 7 桁 (つまり、日時値の秒部分の 1/10000000) を表します。

時刻値の 1/10000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

F

秒の端数の最上位桁 (つまり、日時値の秒部分の 1/10) を表します。その桁がゼロの場合には、何も表示されません。

F 書式指定子が単独で使用され、その他の書式指定子がない場合、F は標準の日時書式指定子として解釈されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

ParseExactTryParseExactParseExactTryParseExact のいずれかのメソッドの引数として使用された場合、F 書式指定子の数は、秒の端数の最上位桁数が最大何桁あれば、文字列を正しく解析できるかを表します。

次の例では、カスタム書式指定文字列の中に F カスタム書式指定子が含まれます。

FF

秒の端数の最上位 2 桁 (つまり、日時値の秒部分の 1/100) を表します。ただし、後続のゼロは表示されません。また、2 桁のゼロも表示されません。次の例では、カスタム書式指定文字列の中に FF カスタム書式指定子が含まれます。

FFF

秒の端数の最上位 3 桁 (つまり、日時値の秒部分の 1/1000) を表します。ただし、後続のゼロは表示されません。また、3 桁のゼロも表示されません。次の例では、カスタム書式指定文字列の中に FFF カスタム書式指定子が含まれます。

FFFF

秒の端数の最上位 4 桁 (つまり、日時値の秒部分の 1/10000) を表します。ただし、後続のゼロは表示されません。また、4 桁のゼロも表示されません。

時刻値の 1/10000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

FFFFF

秒の端数の最上位 5 桁 (つまり、日時値の秒部分の 1/100000) を表します。ただし、後続のゼロは表示されません。また、5 桁のゼロも表示されません。

時刻値の 1/100000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

FFFFFF

秒の端数の最上位 6 桁 (つまり、日時値の秒部分の 1/1000000) を表します。ただし、後続のゼロは表示されません。また、6 桁のゼロも表示されません。

時刻値の 1/1000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

FFFFFFF

秒の端数の最上位 7 桁 (つまり、日時値の秒部分の 1/10000000) を表します。ただし、後続のゼロは表示されません。また、7 桁のゼロも表示されません。

時刻値の 1/10000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。日付および時刻の値の精度は、システム クロックの分解能に依存します。Windows NT 3.5 以降および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。

g, gg (任意の数の g 指定子を追加可能)

年代または紀元を表します (A.D. など)。書式設定される日付に年代または紀元の文字列が関連付けられていない場合、この指定子は無視されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

次の例では、カスタム書式指定文字列の中に g カスタム書式指定子が含まれます。

h

時間を 1 ~ 12 の数値として表します。つまり、午前 0 時と午後 0 時から時間をカウントする 12 時間制で時間が表されます。午前 0 時からの特定の時間を、午後 0 時からの同じ時間と区別できません。時間は丸められず、1 桁の時間は先行ゼロなしで書式設定されます。たとえば、5:43 という時間は、このカスタム書式指定子によって "5" と表示されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

次の例では、カスタム書式指定文字列の中に h カスタム書式指定子が含まれます。

hh, hh (任意の数の h 指定子を追加可能)

時間を 01 ~ 12 の数値として表します。つまり、午前 0 時と午後 0 時から時間をカウントする 12 時間制で時間が表されます。午前 0 時からの特定の時間を、午後 0 時からの同じ時間と区別できません。時間は丸められず、1 桁の時間は先行ゼロ付きで書式設定されます。たとえば、5:43 という時間は、この書式指定子によって "05" と表示されます。

次の例では、カスタム書式指定文字列の中に hh カスタム書式指定子が含まれます。

H

時間を 0 ~ 23 の数値として表します。つまり、午前 0 時から時間をカウントする 24 時間制で時間が表されます。1 桁の時間は、先行ゼロなしで書式設定されます。

単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

次の例では、カスタム書式指定文字列の中に H カスタム書式指定子が含まれます。

HH, HH (任意の数の H 指定子を追加可能)

時間を 00 ~ 23 の数値として表します。つまり、午前 0 時から時間をカウントする 24 時間制で時間が表されます。1 桁の時間は、先行ゼロ付きで書式設定されます。次の例では、カスタム書式指定文字列の中に HH カスタム書式指定子が含まれます。

K

日付と時刻の値のタイム ゾーン情報を表します。DateTime 値で使用した場合、書式設定後の文字列は、DateTime.Kind プロパティの値によって定義されます。ローカル タイム ゾーンの場合 (DateTime.Kind プロパティ値 = DateTimeKind.Local)、この指定子は zzz 指定子に相当し、書式設定後の文字列には世界協定時刻 (UTC) からのローカル オフセットが含まれます ("-07:00" など)。UTC 時刻の場合 (DateTime.Kind プロパティ値 = DateTimeKind.Utc)、書式設定後の文字列には UTC 日付を表す "Z" 文字が含まれます。タイム ゾーンが指定されていない時刻の場合 (DateTime.Kind プロパティ = DateTimeKind.Unspecified)、String.Empty と同じ結果になります。K 書式指定子を DateTimeOffset 値で使用した場合、この指定子は zz 書式指定子に相当し、書式設定後の文字列には DateTimeOffset 値の UTC を基準としたオフセットが含まれます。

単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

次の例では、米国太平洋標準時ゾーンのシステムで、K カスタム書式指定子と各種の DateTime 値および DateTimeOffset 値を組み合わせた結果の文字列を表示します。

m

分を 0 ~ 59 の数値として表します。この分は、直前の時間から経過した分数です。1 桁の分は、先行ゼロなしで書式設定されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。次の例では、カスタム書式指定文字列の中に m カスタム書式指定子が含まれます。

mm, mm (任意の数の m 指定子を追加可能)

分を 00 ~ 59 の数値として表します。この分は、直前の時間から経過した分数です。1 桁の分は、先行ゼロ付きで書式設定されます。次の例では、カスタム書式指定文字列の中に mm カスタム書式指定子が含まれます。

M

月を 1 ~ 12 の数値として表します。1 桁の月は、先行ゼロなしで書式設定されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。次の例では、カスタム書式指定文字列の中に M カスタム書式指定子が含まれます。

MM

月を 01 ~ 12 の数値として表します。1 桁の月は、先行ゼロ付きで書式設定されます。次の例では、カスタム書式指定文字列の中に MM カスタム書式指定子が含まれます。

MMM

現在の DateTimeFormatInfo.AbbreviatedMonthNames プロパティで定義されている月の省略名を表します。次の例では、カスタム書式指定文字列の中に MMM カスタム書式指定子が含まれます。

MMMM

現在の DateTimeFormatInfo.MonthNames プロパティで定義されている月の完全な名前を表します。次の例では、カスタム書式指定文字列の中に MMMM カスタム書式指定子が含まれます。

s

秒を 0 ~ 59 の数値として表します。この秒は、直前の分から経過した秒数です。1 桁の秒は、先行ゼロなしで書式設定されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。次の例では、カスタム書式指定文字列の中に s カスタム書式指定子が含まれます。

ss, ss (任意の数の s 指定子を追加可能)

秒を 00 ~ 59 の数値として表します。この秒は、直前の分から経過した秒数です。1 桁の秒は、先行ゼロ付きで書式設定されます。次の例では、カスタム書式指定文字列の中に ss カスタム書式指定子が含まれます。

t

現在の DateTimeFormatInfo.AMDesignator プロパティまたは DateTimeFormatInfo.PMDesignator プロパティで定義されている AM/PM 指定子の最初の文字を表します。AM 指定子は、書式設定される時刻の時間が 12 未満である場合に使用され、それ以外の場合は PM 指定子が使用されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

次の例では、カスタム書式指定文字列の中に t カスタム書式指定子が含まれます。

tt, tt (任意の数の t 指定子を追加可能)

現在の DateTimeFormatInfo.AMDesignator プロパティまたは DateTimeFormatInfo.PMDesignator プロパティで定義されている AM/PM 指定子を表します。AM 指定子は、書式設定される時刻の時間が 12 未満である場合に使用され、それ以外の場合は PM 指定子が使用されます。

AM と PM を区別する必要のある言語の場合、アプリケーションで必ず tt 指定子を使用する必要があります。たとえば、日本語の場合、AM/PM 指定子の 2 番目の文字は異なりますが、先頭文字は同じです。

次の例では、カスタム書式指定文字列の中に tt カスタム書式指定子が含まれます。

y

年を 1 桁または 2 桁の数値として表します。年が 2 桁を超える場合は、下 2 桁のみが結果に表示されます。2 桁の年の 1 桁目がゼロで始まる場合 (2008 など)、先行ゼロが省略されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

次の例では、カスタム書式指定文字列の中に y カスタム書式指定子が含まれます。

yy

年を 2 桁の数値として表します。年が 2 桁を超える場合は、下 2 桁のみが結果に表示されます。年が 2 桁に満たない場合は、2 桁になるまで数値が先行ゼロで埋められます。

次の例では、カスタム書式指定文字列の中に yy カスタム書式指定子が含まれます。

yyy

年を 3 桁以上で表します。年が 3 桁を超える場合は、それらの数字も結果に含まれます。年が 3 桁に満たない場合は、3 桁になるまで数値が先行ゼロで埋められます。

年が 5 桁になることがあるタイ仏暦については、この書式指定子で 5 桁すべてが表示されるので注意してください。

次の例では、カスタム書式指定文字列の中に yyy カスタム書式指定子が含まれます。

yyyy

年を 4 桁の数値として表します。年が 4 桁を超える場合は、下 4 桁のみが結果に表示されます。年が 4 桁に満たない場合は、4 桁になるまで数値が先行ゼロで埋められます。

年が 5 桁になることがあるタイ仏暦については、この書式指定子で 5 桁すべてが含まれるので注意してください。

次の例では、カスタム書式指定文字列の中に yyyy カスタム書式指定子が含まれます。

yyyyy (任意の数の y 指定子を追加可能)

年を 5 桁の数値として表します。年が 5 桁を超える場合は、下 5 桁のみが結果に表示されます。年が 5 桁に満たない場合は、5 桁になるまで数値が先行ゼロで埋められます。

y 指定子を追加すると、y 指定子の数と同じ桁数になるまで数値が先行ゼロで埋められます。

次の例では、カスタム書式指定文字列の中に yyyyy カスタム書式指定子が含まれます。

z

DateTime 値で使用した場合、オペレーティング システムのローカル タイム ゾーンの、世界協定時刻 (UTC) を基準とした符号付きオフセット (時間単位) を表します。インスタンスの Kind プロパティの値は反映されません。そのため、DateTime 値に対して z 書式指定子を使用することはお勧めできません。

DateTimeOffset 値で使用した場合、DateTimeOffset 値の、UTC を基準とするオフセット (時間単位) を表します。

このオフセットは、常に先頭の符号と共に表示されます。正符号 (+) は UTC より時間が進んでいることを示し、負符号 (-) は UTC より時間が遅れていることを示します。オフセットの範囲は –12 ~ +13 です。1 桁のオフセットは、先行ゼロなしで書式設定されます。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。次の例では、カスタム書式指定文字列の中に z カスタム書式指定子が含まれます。

zz

DateTime 値で使用した場合、オペレーティング システムのローカル タイム ゾーンの、UTC を基準とした符号付きオフセット (時間単位) を表します。インスタンスの Kind プロパティの値は反映されません。そのため、DateTime 値に対して zz 書式指定子を使用することはお勧めできません。

DateTimeOffset 値で使用した場合、DateTimeOffset 値の、UTC を基準とするオフセット (時間単位) を表します。

このオフセットは、常に先頭の符号と共に表示されます。正符号 (+) は UTC より時間が進んでいることを示し、負符号 (-) は UTC より時間が遅れていることを示します。オフセットの範囲は、-12 ~ +13 です。1 桁のオフセットは、先行ゼロ付きで書式設定されます。次の例では、カスタム書式指定文字列の中に zz カスタム書式指定子が含まれます。

zzz, zzz (任意の数の z 指定子を追加可能)

DateTime 値で使用した場合、オペレーティング システムのローカル タイム ゾーンの、UTC を基準とした符号付きオフセット (時間および分単位) を表します。インスタンスの Kind プロパティの値は反映されません。そのため、DateTime 値に対して zzz 書式指定子を使用することはお勧めできません。

DateTimeOffset 値で使用した場合、DateTimeOffset 値の、UTC を基準とするオフセット (時間および分単位) を表します。

このオフセットは、常に先頭の符号と共に表示されます。正符号 (+) は UTC より時間が進んでいることを示し、負符号 (-) は UTC より時間が遅れていることを示します。オフセットの範囲は、-12 ~ +13 です。1 桁のオフセットは、先行ゼロ付きで書式設定されます。次の例では、カスタム書式指定文字列の中に zzz カスタム書式指定子が含まれます。

:

現在の DateTimeFormatInfo.TimeSeparator プロパティで定義されている時刻の区切り記号を表します。この区切り記号は、時、分、および秒を区別するために使用されます。

/

現在の DateTimeFormatInfo.DateSeparator プロパティで定義されている日付の区切り記号を表します。この区切り記号は、年、月、および日を区別するために使用されます。

"

引用文字列 (引用符) を表します。2 つの二重引用符 (") で囲まれた文字列のリテラル値が表示されます。各引用符の前にはエスケープ文字 (\) が必要です。

'

引用文字列 (アポストロフィ) を表します。2 つのアポストロフィ (') 文字で囲まれた文字列のリテラル値が表示されます。

%c

カスタム日時書式指定文字列が c カスタム書式指定子だけで構成されている場合に、そのカスタム書式指定子に関連付けられた結果を表します。つまり、d、f、F、h、m、s、t、y、z、H、M の各カスタム書式指定子を単独で使用するには、それぞれ "%d"、"%f"、"%F"、"%h"、"%m"、"%s"、"%t"、"%y"、"%z"、"%H"、"%M" と指定します。単一の書式指定子を使用する方法の詳細については、「単一のカスタム書式指定子の使用」を参照してください。

\c

エスケープ文字を表します。"c" の文字の前にエスケープ文字 (\) を付けると、その文字がリテラルとして表示されます。結果の文字列に円記号そのものを挿入する場合は、2 つのエスケープ文字 ("\\") を使用します。

その他の文字

その他の文字は結果の文字列にコピーされ、書式設定には影響しません。

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

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

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

DateTimeFormatInfo のプロパティ

書式設定は、現在の DateTimeFormatInfo オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの IFormatProvider パラメータによって明示的に指定されます。IFormatProvider パラメータには、カルチャを表す CultureInfo オブジェクトまたは DateTimeFormatInfo オブジェクトを指定する必要があります。

各種のカスタム日時書式指定子によって生成される書式設定後の文字列は、現在の DateTimeFormatInfo オブジェクトのプロパティに依存します。カスタム日時書式指定子によって生成される結果は、対応する DateTimeFormatInfo プロパティを変更することによって変えることができます。たとえば、ddd 書式指定子を使用した場合、書式設定後の文字列には、AbbreviatedDayNames 文字列配列に指定されている曜日の省略名が追加されます。同様に、MMMM 書式指定子を使用した場合、書式設定後の文字列には、MonthNames 文字列配列に指定されている月の正式名が追加されます。

単一のカスタム書式指定子の使用

カスタム日時書式指定文字列は、複数の文字で構成されます。たとえば、書式指定文字列が h 指定子のみで構成される場合、その書式指定文字列は標準の日時書式指定子として解釈されます。ただし、この場合では、h という標準の日時書式指定子が存在しないため、例外がスローされます。

単一のカスタム日時書式指定子を使用するには、日時指定子の前または後に空白を挿入するか、または単一のカスタム日時指定子の前にパーセント (%) 書式指定子を挿入します。たとえば、"h " および "%h" の各書式指定文字列は、現在の日時値が表す時要素を表示するカスタム日時書式指定文字列として解釈されます。空白を使用すると、結果の文字列にその空白がリテラル文字として表示されるので注意してください。

参照

概念

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

参照

System.DateTime

System.IFormatProvider

その他の技術情報

型の書式設定