日付コントロールの書式は、
Formatプロパティが参照する
DateFormatオブジェクトと
DisplayFormatプロパティが参照する
DateDisplayFormatオブジェクトを使って設定します。これらのオブジェクトのPatternプロパティにキーワードを設定することで、書式を作成します。
1. リテラル文字列
日付コントロールには、キーワード以外の文字列をリテラル文字列として表示させることができます。ただし、リテラル文字列のみをFormatプロパティまたはDisplayFormatプロパティに設定することはできません。また、キーワードをリテラル文字として表示させるには、キーワードの前に円記号(\、Chr(92))を付けます。円記号を表示させる場合は \\ とします。
なお、
ShowLiteralsプロパティを使えば、入力中にリテラル文字列を表示するかどうかを指定できます。
2. フィールド
日付コントロールのフィールドには、次の4種類があります。どのフィールドが表示されるかは、書式の定義に依存します。なお、リテラル文字列の領域は、フィールドとは解釈されません。
日付コントロールの入力書式は、
Formatプロパティが参照する
DateFormatオブジェクトを使って設定します。このオブジェクトの
Patternプロパティにキーワードとリテラル文字列を設定することで、入力書式を作成します。 Patternプロパティでは、以下のキーワードが使えます。
日付に関するキーワード
キーワード |
説明 |
g |
年号の頭文字をアルファベットで表示(M、T、S、H、R) |
gg |
年号の頭文字を漢字で表示(明、大、昭、平、令) |
ggg |
年号の正式名称を漢字で表示(明治、大正、昭和、平成、令和) |
e |
和暦年を2桁で表示(先頭に0を付けない) |
ee |
和暦年を2桁で表示(先頭に0を付ける) |
yy |
年を2桁で表示(先頭に0を付ける) |
yyyy |
年を4桁で表示(先頭に0を付ける) |
MM |
月を2桁の数字で表示(先頭に0を付ける) |
MMM |
月を省略形で表示 (DateTimeFormatInfo.AbbreviatedMonthNames() で指定された形式) |
MMMM |
月を正式名称で表示 (DateTimeFormatInfo.MonthNames()で指定された形式) |
dd |
日を2桁で表示(先頭に0を付ける) |
\(Chr(92)) |
キーワードをリテラル文字として表示 |
元号をキーボードから入力するには、以下のキーを押下します。
元号 |
明治 |
大正 |
昭和 |
平成 |
令和 |
数値入力 |
1 |
2 |
3 |
4 |
5 |
文字入力 |
m |
t |
s |
h |
r |
 |
キーワード"e"または"ee"を使用する場合は、元号を表すキーワード"g"、"gg"、または"ggg"を必ず併用してください。元号の設定を省くと、日付コントロールは年を特定できず、正常に動作できなくなります。 |
自由書式入力
Patternプロパティに空の文字列(""またはString.Empty)を設定すると、自由書式入力が可能になります。自由書式入力では、日付に変換可能なあらゆる値を受けつけますが、無効な文字が入力されても
InvalidInputクライアントイベントは発生しません。
自由書式入力に設定した場合は、次の各プロパティが無効になります。
 |
自由書式入力で日付に変換可能な値は、JavaScriptにおけるDateオブジェクトの parse メソッドが日付と認識する文字列に限られます。 |
西暦2桁入力
通常、西暦2桁で入力すると、コントロールパネルの設定に従って4桁の西暦に変換されます。日付コントロールでは、次の2つのプロパティを使って、コントロールパネルの設定に影響を与えることなく、独自の変換ルールを設定することが可能です。
TwoDigitYearMaxプロパティは、Windowsのコントロールパネルの設定に影響を与えないで、西暦2桁入力時の有効期間を設定します。例えば、TwoDigitYearMaxプロパティに"2029"を設定した場合、2桁の入力数値は、1930年~2029年の間の年を表すものと解釈されます。つまり、年フィールドに"29"が入力された場合は"2029年"、"30"が入力された場合は"1930年"というふうに解釈されます。
UseTwoDigitYearMaxプロパティは、TwoDigitYearMaxプロパティで設定した西暦解釈のルールを使用するのか、またはコントロールパネルで設定したルールを使用するのかを指定します。
 |
- TwoDigitYearMaxプロパティは、入力された2桁の数値を4桁の西暦に変換するときのルールを設定するためのもので、入力日付の範囲を制限するものではありません。つまり、MaxValueとMinValueの各プロパティで設定した入力範囲は、TwoDigitYearMaxプロパティの設定に関わらず、常に有効です。また、Valueプロパティには任意の日付を設定できます。
- TwoDigitYearMaxプロパティの有効な設定値は"199~9999"です。
- 西暦4桁入力では、TwoDigitYearMaxプロパティの設定は無視されます。
|
日付コントロールの表示書式は、
DisplayFormatプロパティが参照する
DateDisplayFormatオブジェクトを使って設定します。このオブジェクトの
Patternプロパティに以下のキーワードとリテラル文字列を設定することで、表示書式を作成します。 キーワードはカスタム書式を設定するときに使用し、書式指定子は既定の書式を呼び出すときに使用します。
プロパティを空の文字列(""またはString.Empty)に設定すると、
DateFormat.Patternプロパティに設定された入力書式が適用されます。
日付に関するキーワード
キーワード |
説明 |
A |
紀元後を表す"A.D.(Anno Domini)"を表示 |
g |
年号の頭文字をアルファベットで表示(M、T、S、H、R) |
gg |
年号の頭文字を漢字で表示(明、大、昭、平、令) |
ggg |
年号の正式名称を漢字で表示(明治、大正、昭和、平成、令和) |
e |
和暦年を2桁で表示(先頭に0を付けない) |
ee |
和暦年を2桁で表示(先頭に0を付ける) |
E |
和暦年を2桁で表示し開始年を元と表示(先頭に0を付けない)(例:平成元年) |
EE |
和暦年を2桁で表示し開始年を元と表示(先頭に0を付ける)(例:平成元年) |
y |
年を2桁で表示(先頭に0を付けない) |
yy |
年を2桁で表示(先頭に0を付ける) |
yyy |
年を4桁で表示(先頭に0を付けない) |
yyyy |
年を4桁で表示(先頭に0を付ける) |
M |
月を2桁の数字で表示(先頭に0を付けない) |
MM |
月を2桁の数字で表示(先頭に0を付ける) |
MMM |
月を省略形で表示 (DateTimeFormatInfo.AbbreviatedMonthNames() で指定された形式) |
MMMM |
月を正式名称で表示 (DateTimeFormatInfo.MonthNames()で指定された形式) |
d |
日を表示(先頭に0を付けない) |
dd |
日を表示(先頭に0を付ける) |
ddd |
曜日を省略形で表示(DateTimeFormatInfo.AbbreviatedDayNames()で指定された形式) |
dddd |
曜日を正式名称で表示(DateTimeFormatInfo.DayNames()で指定された形式) |
\(Chr(92)) |
キーワードをリテラル文字として表示 |
次のサンプルコードは、
Formatプロパティと
DisplayFormatプロパティを使って日付を入力するための書式を設定する方法を示します。
' 日付の入力書式を設定します。
GcDate1.Format.Pattern = "ggg ee年 MM月 dd日"
' 日付の表示書式を設定します。
GcDate1.DisplayFormat.Pattern = "ggg ee年 M月 d日"
// 日付の入力書式を設定します。
GcDate1.Format.Pattern = "ggg ee年 MM月 dd日";
// 日付の表示書式を設定します。
GcDate1.DisplayFormat.Pattern = "ggg ee年 M月 d日";
次のサンプルコードは、上記と同じ設定を
DateFormatオブジェクトと
DateDisplayFormatオブジェクトを明示的に生成することで行います。
Imports GrapeCity.Web.Input.IMDate
' 日付の入力書式を設定します。
GcDate1.Format = New DateFormat("ggg ee年 MM月 dd日")
' 日付の表示書式を設定します。
GcDate1.DisplayFormat = New DateDisplayFormat("ggg ee年 M月 d日")
using GrapeCity.Web.Input.IMDate;
// 日付の入力書式を設定します。
GcDate1.Format = new DateFormat("ggg ee年 MM月 dd日");
// 日付の表示書式を設定します。
GcDate1.DisplayFormat = new DateDisplayFormat("ggg ee年 M月 d日");