MESCIUS InputMan for ASP.NET 10.0J
書式の設定

日付時刻コントロールの特長的な機能である日付書式の設定と活用について解説します。

概要の説明

(図)和暦と西暦の書式

日付時刻コントロールの書式は、Formatプロパティが参照するDateFormatオブジェクトとDisplayFormatプロパティが参照するDateDisplayFormatオブジェクトを使って設定します。 これらのオブジェクトのPatternプロパティにキーワードを設定することで、書式を作成します。

1.リテラル文字列

日付時刻コントロールには、キーワード以外の文字列をリテラル文字列として表示させることができます。ただし、リテラル文字列のみをFormatプロパティまたはDisplayFormatプロパティに設定することはできません。 また、キーワードをリテラル文字として表示させるには、キーワードの前に円記号(\、Chr(92))を付けます。円記号を表示させる場合は \\ とします。

なお、ShowLiteralsプロパティを使えば、入力中にリテラル文字列を表示するかどうかを指定できます。



2. フィールド

日付時刻コントロールのフィールドには、次の8種類があります。どのフィールドが表示されるかは、書式の定義に依存します。なお、リテラル文字列の領域は、フィールドとは解釈されません。

3. 時刻の基点

日付時刻コントロールでは、時刻を表示するときの基点をHour12ModeプロパティとMidnightAs24プロパティで設定することができます。

Hour12ModeプロパティをHour12Mode.Hour12As0に設定すると、表示範囲を 「00:00:00 〜 11:59:59」 にし、Hour12Mode.Hour0As12にすると、表示範囲を 「01:00:00 〜 12:59:59」 にします。

また、MidnightAs24プロパティをTrueに設定すると、真夜中(深夜0時)を「24時」として表示し、Falseにすると、真夜中(深夜0時)を「0時」として表示することができます。
入力書式

日付時刻コントロールの入力書式は、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"を必ず併用してください。元号の設定を省くと、日付時刻コントロールは年を特定できず、正常に動作できなくなります。


時刻に関するキーワード

キーワード 説明
t 12時間制で時刻を表示するときに午前(AMDesignatorプロパティで設定)または午後(PMDesignatorプロパティで設定)を表す文字列の最初の1文字を表示
tt 12時間制で時刻を表示するときに午前(AMDesignatorプロパティで設定)または午後(PMDesignatorプロパティで設定)を表す文字列を表示
hh 時を12時間制で表示(先頭に0を付ける)
HH 時を24時間制で表示(先頭に0を付ける)
mm 分を表示(先頭に0を付ける)
ss 秒を表示(先頭に0を付ける)
\(Chr(92)) キーワードをリテラル文字として表示

午前または午後を表す文字列をキーボードから入力するには、以下のキーを押下します。

区分 午前 午後
数値入力 1 2
文字入力 a p

自由書式入力

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桁の西暦に変換するときのルールを設定するためのもので、入力日付の範囲を制限するものではありません。つまり、MaxDateMinDateの各プロパティで設定した入力範囲は、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)) キーワードをリテラル文字として表示

時刻に関するキーワード

キーワード 説明
t 12時間制で時刻を表示するときに午前(AMDesignatorプロパティで設定)または午後(PMDesignatorプロパティで設定)を表す文字列の最初の1文字を表示
tt 12時間制で時刻を表示するときに午前(AMDesignatorプロパティで設定)または午後(PMDesignatorプロパティで設定)を表す文字列を表示
h 時を12時間制で表示(先頭に0を付けない)
hh 時を12時間制で表示(先頭に0を付ける)
H 時を24時間制で表示(先頭に0を付けない)
HH 時を24時間制で表示(先頭に0を付ける)
m 分を表示(先頭に0を付けない)
mm 分を表示(先頭に0を付ける)
s 秒を表示(先頭に0を付けない)
ss 秒を表示(先頭に0を付ける)
\(Chr(92)) キーワードをリテラル文字として表示

書式指定子

書式指定子 説明
d 短い形式の日付
(例:2015/3/01)
D 長い形式の日付
(例:2015年3月1日)
t 短い形式の時刻
(例:10:30)
T 長い形式の時刻
(例:10:30:00)
f 長い形式の日付と短い形式の時刻
(例:2015年3月1日 10:30)
F 長い形式の日付と長い形式の時刻
(例:2015年3月1日10:30:00)
g 短い形式の日付と短い形式の時刻
(例:2015/3/01 10:30)
G 短い形式の日付と長い形式の時刻
(例:2015/3/01 10:30:00)
Mまたはm 月日の表示
(例:3月1日)
Rまたはr RFC1123の形式
(例:Fri, 01 Mar 2015 10:30:00 GMT)
S ISO 8601準拠の形式
(例:2015-03-01T10:30:00)
u ユニバーサル形式
(例:2015-03-01 10:30:00Z)
U 世界協定時刻
(例:2015年3月1日1:30:00)
Yまたはy 年月の表示
(例:2015年3月)

書式指定子による書式は、コントロールパネルの[地域のオプション]の設定やスレッドに関連付けられているカルチャによって異なります。カルチャに依存しない書式を設定するには、上記のキーワードを使ってカスタム書式を作成します。

書式指定子の中には、キーワードとしても定義されている文字があります。これらを1文字だけ設定すると、書式指定子と解釈されます。キーワードとして認識させる場合は、エスケープ文字である「\(Chr(92))」をその文字の前に配置します。
サンプルコード
次のサンプルコードは、FormatプロパティとDisplayFormatプロパティを使って日付と時刻を入力するための書式を設定する方法を示します。

' 日付時刻の入力書式を設定します。
GcDateTime1.Format.Pattern = "ggg ee年 MM月 dd日 tt hh時 mm分"
' 日付時刻の表示書式を設定します。
GcDateTime1.DisplayFormat.Pattern = "ggg ee年 M月 d日 tt h時 mm分"

' 午前、午後の表示文字を設定します。
GcDateTime1.AMDesignator = "午前"
GcDateTime1.PMDesignator = "午後"
// 日付時刻の入力書式を設定します。
GcDateTime1.Format.Pattern = "ggg ee年 MM月 dd日 tt hh時 mm分";
// 日付時刻の表示書式を設定します。
GcDateTime1.DisplayFormat.Pattern = "ggg ee年 M月 d日 tt h時 mm分";

// 午前、午後の表示文字を設定します。
GcDateTime1.AMDesignator = "午前";
GcDateTime1.PMDesignator = "午後";

次のサンプルコードは、上記と同じ設定をDateFormatオブジェクトとDateDisplayFormatオブジェクトを明示的に生成することで行います。

Imports GrapeCity.Web.Input.IMDate

' 日付時刻の入力書式を設定します。
GcDateTime1.Format = New DateFormat("ggg ee年 MM月 dd日 tt hh時 mm分")
' 日付時刻の表示書式を設定します。
GcDateTime1.DisplayFormat = New DateDisplayFormat("ggg ee年 M月 d日 tt h時 mm分",)
' 午前、午後の表示文字を設定します。
GcDateTime1.AMDesignator = "午前"
GcDateTime1.PMDesignator = "午後"
using GrapeCity.Web.Input.IMDate;

// 日付時刻の入力書式を設定します。
GcDateTime1.Format = new DateFormat("ggg ee年 MM月 dd日 tt hh時 mm分");
// 日付時刻の表示書式を設定します。
GcDateTime1.DisplayFormat = new DateDisplayFormat("ggg ee年 M月 d日 tt h時 mm分");
// 午前、午後の表示文字を設定します。
GcDateTime1.AMDesignator = "午前";
GcDateTime1.PMDesignator = "午後";
関連トピック

 

 


© MESCIUS inc. All rights reserved.