ストリング・データとしての DateTime

以下に、パターン文字のストリングを使用して dateTime 形式を指定する方法に関する情報を記載します。

日付または時刻をストリングに変換するとき、変換を誘導するための形式のパターンを適用できます。 これが適用されるのは、日付または時刻からストリングに変換する場合、 またはストリングを日付または時間に構文解析する場合です。

フォーマット (例えば、日時からストリングへ) の際に、パターンまたはトークンのセットが対応するソースに置き換わります。 図 1 は、これが適用される方法を表現しています。

図 1. パターンを使用して dateTime ソースをフォーマットし、ストリング出力を生成する

ストリングが構文解析されるとき (例えば、 それを dateTime に変換するときなど)、パターンまたはトークンのセットが使用されて、 ターゲットの dateTime のどの部分がストリングのどの部分によって表現されているのかを判別します。 図 2 は、これが適用される方法を表現しています。

図 2. パターンを使用してストリング・ソースを構文解析し、dateTime 出力を生成する

構文

式のパターンは、以下のように定義されます。

   .--------------.
   | .- -.        |
     V  V  |        |
  >------+-symbol-+->
                '-string-'

ここで、
symbol
セット adDeEFGhHIkKmMsSTUwWyYzZ 内の文字。
string
単一引用符で囲まれた、一連の文字。 ストリング内に単一引用符が必要な場合には、2 つの単一引用符 ('') を使用できます。

dateTime をストリングとしてフォーマットするための文字

以下の表は、dateTime に関連してストリングをフォーマットまたは構文解析する際に使用できる、許容される文字をリストしています。

記号 意味 表示内容
a AM または PM のマーク文字 テキスト 入力は、am、AM、pm、PM。出力は、AM または PM
d 日 (1 から 31) 数値 1, 20
dd 日 (01 から 31) 数値 01, 31
D 日 (1 から 366) 数値 3, 80, 100
DD 日 (01 から 366) 数値 03, 80, 366
DDD 日 (001 から 366) 数値 003
e 曜日 (1 ~ 7) 数値 26
EEE 曜日 テキスト Tue
EEEE 曜日 テキスト Tuesday
F 月単位の曜日 (1-5) 数値 2 (7 月の第 2 水曜日を示す)3
G Era テキスト BC または AD
h AM または PM の時間 (1 ~ 12) 数値 6
hh AM または PM の時間 (01 から 12) 数値 06
H 24 時間形式での時刻 (0 から 23) 数値 77
HH 24 時間形式での時刻 (00 から 23) 数値 077
I ISO8601 日時 (最大 yyyy-MM-dd'T'HH:mm:ss.SSSZZZ) テキスト 2004-10-07T12:06:56.568+01:005
IU ISO8601 日時 (上記と同様。ただし、時間帯が +00:00 であれば ZZZ の出力は "Z") テキスト 2004-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z 5
k 24 時間形式での時刻 (1 から 24) 数値 87
k 24 時間形式での時刻 (01 から 24) 数値 087
K AM または PM の時間 (0 ~ 11) 数値 9
KK AM または PM の時間 (00 から 11) 数値 09
m 数値 4
mm 数値 04
M 数字による月 数値 5, 12
MM 数字による月 数値 05, 12
MMM 名前による月 テキスト Jan、Feb
MMMM 名前による月 テキスト January、February
s 数値 5
ss 数値 05
S デシ秒 数値 78
SS センチ秒 数値 708
SSS ミリ秒 数値 7008
SSSS 1/10,000 秒 数値 70008
SSSSS 1/100,000 秒 数値 700008
SSSSSS 1/1,000,000 秒 数値 7000008
T ISO8601 時間 (最大 HH:mm:ss.SSSZZZ) テキスト 12:06:56.568+01:005
TU ISO8601 時間 (上記と同様。ただし、時間帯の +00:00 は 'Z' に置き換わる) テキスト 12:06:56.568+01:00, 15:42:12.000Z5
w 週 (年単位) 数値 7、532
ww 週 (年単位) 数値 07、532
W 週 (月単位) 数値 24
yy 数値 961
yyyy 数値 19961
YY 年: 週と共に使用する場合のみ 数値 962
YYYY 年: 週と共に使用する場合のみ 数値 19962
zzz 時間帯 (省略名) テキスト gmt
zzzz 時間帯 (完全名) テキスト Greenwich Mean Time
Z 時間帯 (+/-n) テキスト +3
ZZ 時間帯 (+/-nn) テキスト +03
ZZZ 時間帯 (+/-nn:nn) テキスト +03:00
ZZZU 時間帯 (ZZZ と同様。"+00:00" は "Z" に置き換わる) テキスト +03:00, Z
ZZZZ 時間帯 (GMT+/-nn:nn) テキスト GMT+03:00
ZZZZZ 時間帯 (ZZZ と同様。ただしコロンはない) (+/-nnnn) テキスト +0300
' テキストのエスケープ   'ユーザー・テキスト'
'' (2 つの単一引用符) エスケープされたテキスト内の単一引用符   'o''clock'

dateTime オブジェクトの表示は、以下のように、指定するシンボルによって異なります。

注: 上記の表の注について以下に説明します。
  1. 年は特殊ケースとして扱われます。
    • 出力時には、y の個数が 2 の場合は、年は 2 桁に切り捨てられます。例えば、yyyy1997 となる場合、yy97 となります。
    • 入力時には、2 桁の年の場合は、物理メッセージ・セット・プロパティー「2 桁の年の世紀の開始」を使用して、世紀が判別されます。 例えば、「2 桁の年の世紀の開始」53 に設定すると、年が 97 の場合は 1997 になり、年が 52 の場合は 2052 になり、年が 53 の場合は 1953 になります。
  2. 通常、一年は週の途中から始まります。 その週の日数が物理メッセージ・セット・プロパティー「年間の最初の週の日数」で指定されている値より小さい場合、その週は前の年の最終週と見なされ、したがって、第 1 週は新年の何日か後に開始します。 大きい場合、これは新年の最初の週と見なされ、したがって、第 1 週は新年の何日か前に開始します。 例えば、書式制御ストリング YYYY ww EEEE を使用すると、2004 年第 1 週目の月曜日 (2004 01 Monday、ここで「年間の最初の週の日数」= 4 および「最初の曜日」= Monday) は、実際には 2003 年 12 月 29 日になります。 YY を使用すると、 曜日 (E) および年単位の週 (w) は必要に応じて調整され、 直前の年に入れられます。

    y シンボルを使用すると、調整は行われず、 年末前後の日付の場合は予測不能な結果になることがあります。 たとえば、ストリング 2002 01 Monday は以下のように形式設定されます。

    • 書式制御ストリング YYYY ww EEEE を使用すると、 2002 年第 1 週の月曜日は、31st December 2001 と正しく解釈されます。
    • 書式制御ストリング yyyy ww EEEE を使用すると、 2002 年第 1 週の月曜日は、30th December 2002 と誤って解釈されます。

    Y を使用する場合は、w も共に使用する必要があります。 w を使用しないで Y を指定すると、 年は無視されます。 例えば、YYYY-MM-dd を指定して 1996-03-01 を形式設定すると、 年の入力は無視され、現在の年が想定されるので、結果は 2005-03-01 になります。

  3. 2001 年 7 月 11 日は、7 月の第 2 水曜日なので、 形式制御ストリング yyyy MMMM EEEE F を使用して 2001 July Wednesday 2 と表せます。 これは 2001 年 7 月の第 2 週の水曜日 (これは 2001 年 7 月 4 日) ではありません。
  4. 月の第 1 週と最終週に、前後の月の日が含まれることがあります。 たとえば、 2001 年 7 月 31 日火曜日を 2001 年 8 月第 1 週の火曜日 として表せます。 この場合は、形式制御ストリング yyyy MM W EEEE を使用して 2001 08 1 Tuesday と指定します。
  5. 『ISO8601、I および T 日時トークン』を参照してください。
  6. 「曜日」フィールドは週までの数値オフセットで、物理メッセージ・セット・プロパティー「最初の曜日」の値に応じて変化します。 例えば、物理メッセージ・セット・プロパティー「最初の曜日」が月曜日に設定されている場合、週の第 3 日は水曜日になります。
  7. 24 時間フィールドが競合する am/pm フィールドとともに指定される場合、結果があいまいになる場合があります。
  8. 秒の端数。長さは入力時のフォーマット記号の数値と暗黙的に一致している必要があります。 出力は指定された長さに丸められます。
  9. 長いタイム・ゾーンは、「大陸/都市」形式で使用するときに最適に作動します。 同様に、Unix システムでは、TZ 環境変数は「大陸/都市」形式を使用して指定する必要があります。

ISO8601、I および T 日時トークン

日時値が ISO8601:2000「日時の表記」規格に準拠している場合は、フォーマット・シンボル I および T が使用可能かどうかを考慮してください。これらは、ISO8601 規格の特に以下のサブセットと一致します。

以下のシンボルは単独でのみ使用する必要があります。

出力では、論理データ・タイプに応じて以下の形式が適用されます。

論理 MRM データ・タイプ 論理 ESQL データ・タイプ 出力形式
xsd:dateTime TIMESTAMP または GMTTIMESTAMP yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
xsd:date DATE yyyy-MM-dd
xsd:gYear INTERVAL yyyy
xsd:gYearMonth INTERVAL yyyy-MM
xsd:gMonth INTERVAL --MM
xsd:gmonthDay INTERVAL --MM-dd
xsd:gDay INTERVAL ---dd
xsd:time TIME / GMTTIME 'T'HH:mm:ss.SSSZZZ
注:
  • 入力時は I と T の両方で、協定世界時 (UTC) との時差がゼロであることを示す '+00:00' および 'Z' が受け入れられますが、出力時は常に '+00:00' が生成されます。出力時に常に 'Z' を生成する必要がある場合は、代わりに IU または TU の代替フォーマット・シンボルを使用する必要があります。
  • ZZZ では、協定世界時 (UTC) との時差がゼロであることを示すために常に '+00:00' が出力されます。出力時に常に 'Z' を生成する必要がある場合は、代わりに ZZZU の代替形式を使用する必要があります。

出力での入力 UTC 形式の使用

dateTime をストリングとして含む論理タイプ xsd:dateTime または xsd:time のエレメントまたは属性は、Z 文字または時間帯 +00:00 のどちらかを使用することにより、協定世界時 (UTC) を使用できます。 入力の際に、MRM パーサーはそのようなエレメントおよび属性の UTC 形式を記憶します。 出力の際に、エレメントまたは属性の dateTime 形式プロパティーを使用することにより、 Z または +00:00 を表示するかどうかを指定できます。 またはその代わりに、メッセージ・セット・プロパティー「出力時に入力 UTC 形式を使用」にチェックを付けることにより、入力 UTC 形式を保存することもできます。 このプロパティーにチェック・マークが付いている場合には、UTC 形式が出力メッセージに保存され、「日時形式」プロパティーにより暗黙的に示される形式をオーバーライドします。

次の表は、dateTime 形式のいくつかの例を示しています。

形式のパターン 結果
"yyyy.MM.dd'at'HH:mm:ss ZZZ" 1996.07.10 at 15:08:56 -05:00
EEE, MMM d, "yy" Wed, July 10, '96
"h:mm a" 8:08 PM
"hh 'o''clock' a, ZZZZ" 09 o'clock AM, GMT+09:00
"K:mm a, ZZZ" 9:34 AM, -05:00
"yyyy.MMMMM.dd hh:mm aaa" 1996.July.10 12:08 PM
関連概念
メッセージのモデル化
メッセージ・モデル
関連タスク
メッセージ・モデルの開発
メッセージ定義ファイルの処理
メッセージ・モデル・オブジェクトの処理
関連資料
メッセージ・モデルの参照情報
メッセージ・モデル・オブジェクトのプロパティー
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ad09291_