これらの変数の内部値について詳しくは、『プリミティブ・データ型』を参照してください。
デフォルトのマスクは yyyyMM です。
yyyyyyMM
yyyyyy
MM
ddHHmmssffffff
HHmmssff
mmss
HHmm
// 無効
ddmmssffffff
HHssff
デフォルトのマスクは yyyyMMddHHmmss です。
yyyyMMddHHmmss
yyyy
MMss
// 無効
ddMMssffffff
HHssff
構文解析フォーマットの規則は、表示フォーマットの規則と同じであり、例外については以下の規則として示します。
ユーザー独自のフォーマット・パターンは、日付または時刻の構成要素を示す文字を使用して作成します。 日付または時刻のコンポーネントとしてテキストを構文解析することなく、日付/時刻ストリングに文字を組み込むには、その文字 (単数または複数) を単一引用符で囲んでください。 日付、時刻、またはタイム・スタンプで単一引用符を表示する場合は、単一引用符を 2 個使用します。
次の表では、パターン内の文字およびその値をリストしています。
| 文字 | 日付または時刻コンポーネント | 型 | 例 |
|---|---|---|---|
| G | 紀元指定子 | テキスト | AD |
| y | 年 | 年 | 1996; 96 |
| M | 1 年のうちの月 | 月 | July; Jul; 07 |
| w | 1 年のうちの週 | 数値 | 27 |
| W | 1 カ月のうちの週 | 数値 | 2 |
| D | 1 年のうちの日 | 数値 | 189 |
| d | 1 カ月のうちの日 | 数値 | 10 |
| F | 週の曜日 | 数値 | 2 |
| E | 週の曜日 | テキスト | Tuesday; Tue |
| a | AM/PM マーカー | テキスト | PM |
| H | 1 日のうちの時間 (0 から 23) | 数値 | 0 |
| k | 1 日のうちの時間 (0 から 24) | 数値 | 24 |
| K | AM/PM での時間 (0 から 11) | 数値 | 0 |
| h | AM/PM での時間 (1 から 12) | 数値 | 12 |
| m | 1 時間のうちの分数 | 数値 | 30 |
| s | 1 分のうちの秒数 | 数値 | 55 |
| S | ミリ秒 (出力) | 数値 | 978 |
| f | ミリ秒 (構文解析) | 数値 | 978 |
| z | タイム・ゾーン | 一般タイム・ゾーン | 太平洋標準時; PST; GMT-08:00 |
| Z | タイム・ゾーン | RFC 822 タイム・ゾーン | -800 |
| C | 世紀 | 世紀 | 20; 21 |
パターン内で連続して使用される複数の同一文字によって、EGL がストリング内で対応する数字、文字、または両方を解析する方法が決まります。 解釈は、文字のタイプによって異なり、またパターンがフォーマット設定または構文解析のいずれに使用されるかに応じても異なります。次のリスト は、文字の型、およびこれらの文字の数量の違いが、それらの解釈方法にどのように影響するかを示しています。
構文解析では、パターン文字の数が 2 でない場合、桁数に関係なく、年は文字どおりに解釈されます。 例えば、パターン MM/dd/yyyy に値 01/11/12 を割り当てると、January 11, 12 A.D. と解析されます。同じパターンに値 01/02/3 または 01/02/0003 を割り当てると、January 2, 3 A.D. と解析されます。同様に、同じパターンに値 01/02/-3 を割り当てると、January 2, 4 B.C. と解析されます。
構文解析では、パターンが yy の場合、パーサーにより、現在の年を基準としてフル年が判別されます。 パーサーは、2 桁で表された年を、処理時点の 80 年前から 20 年後以内と想定します。例えば、現在の年が 2007 年である場合、 パターン MM/dd/yy に値 01/11/12 を割り当てると 2012 年 1 月 11 日と解析し、 値 05/04/64 を割り当てると 1964 年 5 月 4 日と解析します。
t TIMESTAMP( "ssffff" );
s STRING = StrLib.formatTimestamp( t, "ssSSSS" );
GMTOffsetTimeZone = GMT 符号 時間 分
構文解析では、RFC 822 タイム・ゾーンも許容されます。
RFC822TimeZone = 符号 TwoDigitHours 分
TwoDigitHours は、00 から 23 までの 2 桁の数値でなければなりません。 その他の定義は、一般タイム・ゾーンと同じです。
構文解析では、一般タイム・ゾーンも許容されます。
次の表では、米国のロケールで解釈される日付と時刻パターンのサンプルの一部を記載しています。すべて同じ日付、4 July、2001、午後 12:08:56、太平洋夏時間 (Pacific Daylight Time) を使用しています。
| 日付と時刻のパターン | 結果 |
|---|---|
| yyyy.MM.dd G 'at' HH:mm:ss z | 2001.07.04 AD at 12:08:56 PDT |
| EEE, MMM d, ''yy | Wed, Jul 4, '01 |
| h:mm a | 12:08 PM |
| hh 'o''clock' a, zzzz | 12 o'clock PM, Pacific Daylight Time |
| K:mm a, z | 0:08 PM, PDT |
| yyyyy.MMMMM.dd GGG hh:mm aaa | 02001.July.04 AD 12:08 PM |
| EEE, d MMM yyyy HH:mm:ss Z | Wed, 4 Jul 2001 12:08:56 -0700 |
| yyMMddHHmmssZ | 010704120856-0700 |
「日付/時刻」フォーマット指定子には、カレンダー指定子を組み込むこともできます。 これらの指定子は EGL が入力する日付ストリングの構文解析、 または出力する日付ストリングのフォーマットに使用するカレンダー・システムを示します。EGL は、指定したカレンダーや、DATE、TIME、TIMESTAMP 変数の内部値の、ストリング・データ間における変換を実行します。
| カレンダー指定子 | カレンダー |
|---|---|
| Bu | 仏教暦 |
| Ch | 中国暦 |
| Gr | グレゴリオ暦 |
| He | ヘブライ暦 |
| Is | イスラム暦 |
| Ja | 和暦 |
各種のカレンダー・システムでローカライズされた日付ストリングは、他のロケールでは出力できない場合があるため、この問題は複雑になりがちです。 カレンダーが異なると、使用する年号指定子のほか、年の番号付けの起点も異なるので、多くの場合、特定のローカライズされた環境でしか正しく表示されません。 例えば、和暦の元号日付システムは、旧形式のユリウス暦 (グレゴリオ暦より数日遅れ) 同様、日本の天皇の治世年により決まります。
myDate DATE;
myJapaneseDate STRING;
strLib.defaultDateFormat = "Gryyyy/MM/dd";
myDate = "1912/08/13";
myJapaneseDate = formatDate(myDate,"JaGyy/MM/dd");
ご使用のシステムが日本向けにローカライズされている場合、strLib.defaultDateFormat を和暦を使用するように設定したり、myDate を和暦の日付に設定したりすることができます。
EGL は日付ストリングをデフォルトの日付形式に準拠して構文解析し、8 桁のグレゴリオ暦の日付として保存します。以下の表は、グレゴリオ暦の日付を上で示した日本元号形式に変換した例を示しています。 大括弧内の名前は、所定の日本元号を示す日本語の文字 (4 つの 2 バイト) を表します。
| グレゴリオ暦の日付 | 日本元号に基づく日付 |
|---|---|
| 1868/09/20 | [明治]01/09/08 |
| 1912/08/12 | [明治]45/07/30 |
| 1912/08/13 | [大正]01/07/31 |
| 1927/01/07 | [大正]15/12/25 |
| 1927/01/08 | [昭和]01/12/26 |
| 1989/01/20 | [昭和]64/01/07 |
| 1989/01/21 | [平成]01/01/08 |
| 2005/01/14 | [平成]17/01/01 |
EGL は、Java™ バージョンの International Components for Unicode ライブラリー (ICU4J) を使用して、入力および表示に必要な日付変換を行っています。 しかし、EGL は、常に日付をグレゴリオ暦形式の 8 桁を使用して保存します。 つまり、タイ語のアプリケーションでは仏教暦の日付が必要になりますが、 EGL では変換に ICU4J を使用することで、その日付を 8 桁のグレゴリオ暦形式で保存しているということです。 アプリケーションは、使用するパターンの整合性を保つため、この処理はプログラマーおよびユーザーの両方に対し非表示のままになっています。
| プラットフォーム | 問題 |
|---|---|
| COBOL 生成 |
|
| DB2® | この表内の『COBOL 生成』の項目を参照してください。 |
| Rich UI | 『Rich UI の日時サポート』を参照してください。 |