STRING データとしての DateTime

DateTime オブジェクトが CWF「パック 10 進数 (Packed Decimal)」の場合は、 数値として表現されるシンボルしか使用できません。 他のすべての「物理タイプ (Physical Type)」オプションの場合、 すべてのシンボルを使用できます。

パターン文字のストリングを使用して dateTime 形式を指定できます。 パターン文字の個数によって形式が決まります。 以下の dateTime の形式シンボルの表には、 パターン文字として予約済みの文字が定義されています。

記号 意味 表示内容
a AM または PM のマーク文字 テキスト pm
d 日 (月単位) 数値 10
D 日 (年単位) 数値 189
e 曜日 (1 ~ 7) 数値 2
E 曜日 テキスト Tuesday
F 曜日 (月単位) 数値 2 (7 月の第 2 水曜日)3
G Era テキスト AD
h AM または PM の時間 (1 ~ 12) 数値 12
H 1 日単位の時間 (0 ~ 24) 数値 0
I 日付/時刻 (ISO8601) として構文解析   (注 6)
k 1 日単位の時間 (1 ~ 24) 数値 24
K AM または PM の時間 (0 ~ 11) 数値 0
m 分 (時間単位) 数値 30
M 月 (年単位) テキストおよび数値 July および 07
w 週 (年単位) 数値 272
W 週 (月単位) 数値 2
s 秒 (分単位) 数値 55
S ミリ秒 数値 978
T 時刻 (ISO8601) として構文解析   (注 6)
y 数値 19961
Y 年: 週と共に使用する場合のみ 数値 19962
z TimeZone テキスト zzzz = 太平洋標準時
Z 時間帯 テキスト +05:30
' テキストのエスケープ   'ユーザー・テキスト'
'' エスケープされたテキスト内の単一引用符   'o''clock'

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

Notes:

上記の表の注について以下に説明します。

  1. 年は特殊ケースとして扱われます。
    • 出力時には、y の個数が 2 の場合は、 年は 2 桁に切り捨てられます。 たとえば、yyyy の場合は 1997 が作成され、 yy の場合は 97 が作成されます。
    • 入力時には、2 桁の年の場合は、 CWF メッセージ・セット・プロパティー「「世紀」ウィンドウ (Century Window)」を使用して、 世紀が判別されます。 たとえば、「「世紀」ウィンドウ (Century Window)」53 に設定すると、 年が 97 の場合は 1997 になり、 年が 52 の場合は 2052 になり、 年が 53 の場合は 1953 になります。
  2. 元日は普通は週の境界に入らないので、 年単位の週を使用して表現される日付は、 前後の年の日付を指している可能性があります。 たとえば、形式制御ストリング YYYY ww EEEE を使用すると、 2002 年第 1 週の 1 日目 (2002 01 Monday) は、 実際には 2001 年 12 月 31 日になります。 YY を使用すると、 曜日 (E) および年単位の週 (w) は必要に応じて調整され、 直前の年に入れられます。 y シンボルを使用すると、調整は行われず、 年末前後の日付の場合は予測不能な結果になることがあります。

    たとえば、ストリング 2002 01 Monday は以下のように形式設定されます。

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

    Y を使用する場合は、w も共に使用する必要があります。 w を使用しないで Y を指定すると、 年は無視されます。 たとえば、 YYYY-mm-dd を指定して 1996-03-01 を形式設定すると、 年の入力は無視され、現在の年が想定されるので、 結果は 2002-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. 時間帯は、 GMT ( +/-hh:mm ) からの時分のオフセットとして表すことしかできません。 Z 形式設定シンボルの個数に応じて出力が変わります。
    • -Z (短形式) の場合は -5 が作成されます。
    • -ZZ (中間形式) の場合は -05 が作成されます。
    • -ZZZ (長形式) の場合は -05:00 が作成されます。
    • -ZZZZ (長形式) の場合は GMT-05:00 が作成されます。
  6. 形式設定シンボル I (大文字の "i") を使用すれば、 任意の ISO8601 dateTime ストリングに一致させることができます。 これらの例は、下記の ISO8601 の dateTime に関する解説に示されています。 I は単独でのみ使用できます。

    メッセージ・フローへの入力時には、I の形式制御ストリングが使用されていると、 ISO8601 に準拠した任意の dateTime を解析することができます。 メッセージ・フローからの出力時には、 dateTime は常に最も完全な形式 yyyy-MM-dd'T'HH:mm:ss.SSS で表されます。

    TT 形式設定シンボルを使用すると、 ISO8601 の DateTime と一致するよう形式制御ストリングを構成できます。 T は dateTime エンティティーの時刻の部分の前に付きます。

次の表は、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

以下は、ISO8601 dateTime の例です。

Year
      yyyy
Year and month
      yyyy-MM
Complete date
      yyyy-MM-dd
Complete date plus hours and minutes
      yyyy-MM-ddTHH:mm
Complete date plus hours, minutes, and seconds
      yyyy-MM-ddTHH:mm:ss
Complete date plus hours, minutes, seconds, and a decimal fraction of a second
      yyyy-MM-ddTHH:mm:ss.S

予測不能な結果になる形式制御ストリングを作成する可能性があるので、 これらのシンボルを使用する際には注意しなければなりません。 たとえば、dMyyyy と指定すると、 日、月、および年の間を区別できません。 dMyyyy は、 日を 1 文字以上で表し、月を 1 文字以上で表し、 年を 4 文字で表すようにブローカーに指示します。 したがって、3111999 は、 3/11/1999 とも 31/1/1999 とも解釈できます。

関連概念
メッセージのモデル化
メッセージ・モデル

関連タスク
メッセージ・モデルの開発
メッセージ定義ファイルの処理
メッセージ・モデル・オブジェクトの処理

関連資料
メッセージ・モデル参照情報
メッセージ・モデル・オブジェクトのプロパティー