DateTime XAML 構文

CalendarDatePicker などの一部のコントロールには、DateTime 型を使用するプロパティが存在します。 これらのコントロールに対する日付または時刻の初期値は、分離コードで実行時に指定するのが一般的です。ただし、日付または時刻の初期値を XAML で指定することもできます。 WPF XAML パーサーでは、組み込みの XAML テキスト構文を使用して、DateTime の値が解析されます。 このトピックでは、DateTime の XAML テキスト構文の詳細について説明します。

DateTime XAML 構文が使用される状況

日付は必ずしも XAML で設定する必要はありません。また、XAML で設定することが適切とは言えない場合もあります。 たとえば、DateTime.Now プロパティを使用すると、実行時に日付を初期化できます。また、カレンダーに対する日付の調整も、ユーザーの入力に基づいてコードビハインドですべて行うことができます。 ただし、コントロール テンプレートの CalendarDatePicker に日付をハードコーディングすることが必要になる場合もあります。 このようなシナリオでは、DateTime XAML 構文を使用する必要があります。

DateTime XAML 構文はネイティブの動作

DateTime は、CLR の基底クラス ライブラリで定義されているクラスです。 基底クラス ライブラリと CLR の他のライブラリとの関連性のため、TypeConverterAttribute をクラスに適用し、型コンバーターを使用して XAML 文字列を処理し、ランタイム オブジェクト モデルの DateTime に変換することはできません。 変換動作を提供する DateTimeConverter クラスは存在しません。このトピックで説明する変換動作は、WPF XAML パーサーのネイティブな動作です。

DateTime XAML 構文の書式指定文字列

DateTime の形式は、書式指定文字列で指定できます。 書式指定文字列は、値を作成するときに使用できるテキスト構文を形式化します。 既存の WPF コントロールの DateTime 値では、一般に、DateTime の日付要素のみが使用され、時刻要素は使用されません。

DateTime を XAML で指定する場合、どの書式指定文字列でも代用できます。

また、このトピックで特に示されていない形式および書式指定文字列も使用できます。 技術的には、DateTime 値を XAML で指定すると、WPF XAML パーサーによって解析されるときに、DateTime.Parse が内部的に呼び出されます。したがって、XAML の入力では、DateTime.Parse によって受け付けられる任意の文字列を使用できます。 詳細については、「DateTime.Parse」を参照してください。

重要

DateTime XAML 構文でネイティブ変換を行う場合は常に、CultureInfo として en-us を使用します。 これは、XAML 内の Language 値または xml:lang 値による影響を受けません。XAML の属性レベルでの型変換は、コンテキストなしで動作するためです。 日や月を表示する順序などにはカルチャによる違いがあるため、ここで示した書式指定文字列は補完しないでください。 ここで示した書式指定文字列は、その他のカルチャ設定に関係なく、XAML を解析する場合に適しています。

以降のセクションでは、DateTime の一般的な書式指定文字列について説明します。

短い形式の日付パターン ("d")

XAML における DateTime の短い日付形式は次のとおりです。

M/d/YYYY

これは、WPF コントロールでの一般的な使用法で、必要なすべての情報を指定するための最も簡単な形式です。タイム ゾーン オフセットと時刻要素を誤って指定した場合でも影響を受けないため、他の形式ではなく、この形式の使用をお勧めします。

たとえば、2010 年 6 月 1 日を指定するには、次の文字列を使用します。

3/1/2010

詳細については、「DateTimeFormatInfo.ShortDatePattern」を参照してください。

並べ替えできる DateTime のパターン ("s")

XAML における並べ替え可能な DateTime のパターンを次に示します。

yyyy'-'MM'-'dd'T'HH':'mm':'ss

たとえば、2010 年 6 月 1 日を指定するには、次の文字列を使用します (時刻要素はすべて 0 として入力されます)。

2010-06-01T000:00:00

RFC1123 パターン ("r")

RFC1123 パターンの利点は、カルチャに依存しないために、RFC1123 パターンが使用されている他の日付ジェネレーターから入力された文字列を使用できることです。 XAML における RFC1123 の DateTime パターンを次に示します。

ddd, dd MMM yyyy HH':'mm':'ss 'UTC'

たとえば、2010 年 6 月 1 日を指定するには、次の文字列を使用します (時刻要素はすべて 0 として入力されます)。

Mon, 01 Jun 2010 00:00:00 UTC

その他の形式とパターン

既に説明したように、XAML における DateTime では、DateTime.Parse に対する入力として受け付けられる任意の文字列を指定できます。 これには、その他の形式化された形式 (例: UniversalSortableDateTimePattern) および特定の DateTimeFormatInfo フォームとして形式化されていない形式が含まれます。 たとえば、YYYY/mm/dd という形式は、DateTime.Parse に対する入力として受け付けられます。 このトピックでは、使用可能な形式の一部を説明します。標準的な使用手順としては、短い形式の日付パターンをお勧めします。

関連項目