日付/時刻値は年、月、日、時、分、秒などの要素で構成される文字列であり、その書式は、次の表に掲げる各要素の書式指定子で構成される書式指定文字列で表されます。
FMEの日付/時刻関数のうち @DateTimeParse 関数(任意の書式からFME標準書式への変換)および @DateTimeFormat 関数(FME標準書式から任意の書式への変換)の引数として設定する変換前、変換後の書式は、その書式指定文字列によって指定します。
また、DateTimeConverter トランスフォーマーによる日付/時刻書式の変換は、 @DateTimeParse 関数と @DateTimeFormat 関数を組み合わせて行う任意の書式 –> FME標準書式 –> 任意の書式の変換と同等であり、同トランスフォーマーの Input Format(変換前フォーマット)パラメーターと Output Format(変換後フォーマット)パラメーターにおける書式の設定も書式指定文字列によって行います。
@DateTimeParse 関数と @DateTimeFormat 関数で取り扱いが異なるものがあることに注意してください。
日付/時刻の要素 | 書式指定子と説明 | @DateTimeParse 関数での使用例 | @DateTimeFormat 関数での使用例 |
---|---|---|---|
年 | %Y 4桁の西暦年 0001~9999 | @DateTimeParse(2017-01-02,%Y-%m-%d) = 20170102 | @DateTimeFormat(20170102,%Y-%m-%d) = 2017-01-02 |
%y#### 西暦年の下2桁が一致する年のうち、####(特定の西暦年)を超えない最大の年 例えば %y2059 の場合、00~59 は 2000~2059 と解釈され、60~99 は1960~1999 と解釈される。 | @DateTimeParse(17-01-02,%y2020-%m-%d) = 20170102 @DateTimeParse(17-01-02,%y2010-%m-%d) = 19170102 | (使用不可) | |
%y 西暦年の下2桁 00~99 | (使用不可) | @DateTimeFormat(20170102,%y-%m-%d) = 17-01-02 | |
月 | %m 2桁の月 01~12 | @DateTimeParse(2017-01-02,%Y-%m-%d) = 20170102 区切り文字があれば1桁の1~9も可 | @DateTimeFormat(20170102,%Y-%m-%d) = 2017-01-02 |
%N 1~2桁の月 1~12 | @DateTimeParse(1/2/2017,%N/%e/%Y) = 20170102 区切り文字が必要 2桁の01~09も可 | @DateTimeFormat(20170102,%N/%e/%Y) = 1/2/2017 | |
%b 月の英略称(3文字) Jan~Dec | @DateTimeParse(Jan 2 2017,%b %d %Y) = 20170102 | @DateTimeFormat(20170102,%b %d %Y) = Jan 02 2017 | |
%B 月の英名 January~December | @DateTimeParse(January 2 2017,%B %d %Y) = 20170102 | @DateTimeFormat(20170102,%B %d %Y) = January 02 2017 | |
週 | %a 曜日の英略称(3文字) Sun~Sat | (使用不可) | @DateTimeFormat(20170102,%a %b %d %Y) = Mon Jan 02 2017 |
%A 曜日の英名 Sunday~Saturday | (使用不可) | @DateTimeFormat(20170102,%A %B %d %Y) = Monday January 02 2017 | |
%u 月曜日=1として週の何日目かをを示す1桁の連番 1~7 | (使用不可) | @DateTimeFormat(20170102,%u) = 1 | |
%U 年の最初の日曜日から始まる週を01として年内の何週目かを示す2桁の連番 00~53 | (使用不可) | @DateTimeFormat(20160102,%U) = 00 @DateTimeFormat(20160103,%U) = 01 @DateTimeFormat(20171231,%U) = 53 | |
%w 日曜日=0として週の何日目かを示す1桁の連番 0~6 | (使用不可) | @DateTimeFormat(20170101,%w) = 0 | |
%W 年の最初の月曜日から始まる週を01として年内の何週目かを示す2桁の連番 00~53 | (使用不可) | @DateTimeFormat(20160103,%W) = 00 @DateTimeFormat(20160104,%W) = 01 @DateTimeFormat(20181231,%W) = 53 | |
日 | %d 2桁の日 01~月の最終日 | @DateTimeParse(2017-1-2,%Y-%m-%d) = 20170102 区切り文字があれば1桁の1~9も可 | @DateTimeFormat(20170102,%Y-%m-%d) = 2017-01-02 |
%e 1~2桁の月 1~月の最終日 | @DateTimeParse(1/2/2017,%N/%e/%Y) = 20170102 区切り文字が必要 2桁の01~09も可 | @DateTimeFormat(20170102,%N/%e/%Y) = 1/2/2017 | |
%j 1月1日を001として年内の何日目かを示す連番 001~365(閏年では366) | @DateTimeParse(20171,%Y%j) = 20170101 区切り文字があれば1~2桁の1~99も可 | @DateTimeFormat(20170101,%Y-%j) = 2017-001 @DateTimeFormat(20161231,%Y-%j) = 2016-366 | |
時 | %H 2桁の24時制の時 00~23 | @DateTimeParse(08:30,%H:%M) = 083000 区切り文字があれば1桁の0~9も可 | @DateTimeFormat(083000,%H:%M:%S) = 08:30:00 |
%k 1~2桁の24時制の時 0~23 | @DateTimeParse(8:30,%k:%M) = 083000 区切り文字が必要 2桁の00~09も可 | @DateTimeFormat(083000,%k:%M) = 8:30 | |
%I (大文字アイ) 2桁の12時制の時 01~12 | @DateTimeParse(08:30PM,%I:%M%p) = 203000 区切り文字があれば1桁の1~9も可 | @DateTimeFormat(203000,%I:%M%p) = 08:30PM | |
%l (小文字エル) 1~2桁の12時制の時 1~12 | @DateTimeParse(8:30PM,%l:%M%p) = 203000 区切り文字が必要 2桁の01~09も可 | @DateTimeFormat(203000,%l:%M%p) = 8:30PM | |
%p 午前、午後の別 AM/PM | @DateTimeParse(12:30am,%I:%M%p) = 003000 大文字と小文字は区別しない | @DateTimeFormat(083000,%I:%M%p) = 08:30AM | |
分 | %M 2桁の分 00~59 | @DateTimeParse(8:30,%H:%M) = 083000 区切り文字があれば1桁の0~9も可 | @DateTimeFormat(083000,%H:%M:%S) = 08:30:00 |
秒 | %S 整数部が2桁の秒(ナノ秒精度の小数部もサポートする) 00~59 | @DateTimeParse(8:30:01.234,%H:%M:%S) = 083001.234 | @DateTimeFormat(083059.123,%H:%M:%S) = 08:30:59.123 |
%s Unixエポック(1970-01-01 00:00:00+00:00)からの経過秒数(ナノ秒精度の小数部もサポートする)。 書式指定子 %z, %Ez との併用はできない。 | @DateTimeParse(1.234,%s) = 19700101000001.234+00:00 変換結果の日付時刻のタイムゾーンは常にUTCで、タイムゾーンサフィクス(+00:00)がつく。 | @DateTimeFormat( 19700101000001.234+00:00,%s) = 1.234 変換前の日付時刻にはタイムゾーンサフィクスがついていなければならない。 | |
%Es 同上。ただし、使用例欄に注記したように、タイムゾーンサフィックスの取り扱いが異なる。 | @DateTimeParse(1.234,%Es) = 19700101000001.234 変換結果の日付時刻のタイムゾーンは常にUTCだが、タイムゾーンサフィクス(+00:00)はつかない。 | @DateTimeFormat( 19700101000001.234,%Es) = 1.234 変換前の日付時刻にはタイムゾーンサフィクスがついていてはならず、常にUTCと解釈される。 | |
タイムゾーン | %z タイムゾーンサフィクス +/-hh:mm | @DateTimeParse(8:30+09,%H:%M%z) = 083000+09:00 +/-hhmm, +/-hh または Z(+00:00と同義)も可。 | @DateTimeFormat(000000+09:00,%H:%M:%S%z) = 00:00:00+09:00 |
%Ez 同上。ただし、使用例欄に注記したように、@DateTimeFormat関数による変換結果においてUTCのタイムゾーンは Z で表される。 | @DateTimeParse(03:04:05Z,%H:%M:%S%Ez) = 030405+00:00 +/-hhmm, +/-hh, または Z(+00:00と同義)も可 | @DateTimeFormat(030405+00:00,%H:%M:%S%Ez) = 03:04:05Z UTCのタイムゾーンは Z で表される(+00:00ではない)。 | |
ショートカット | %T %H:%M:%S と同義 | @DateTimeParse(03:04:05,%T) = 030405 | @DateTimeFormat(000000,%T) = 00:00:00 |
FME FMEの標準日付/時刻書式 %Y%m%d$ %H%M%S$ %H%M%S%Ez$ %Y%m%d%H%M%S$ %Y%m%d%H%M%S%Ez$ | @DateTimeParse(20170102,FME) = 20170102 @DateTimeParse(030405+0900,FME) = 030405+09:00 | @DateTimeFormat(20170102,FME) = 20170102 @DateTimeFormat(030405+09,FME) = 030405+09:00 | |
ISO ISOの標準日付/時刻書式 %Y-%m-%d$ %H:%M:%S$ %H:%M:%S%Ez$ %Y-%m-%dT%H:%M:%S$ %Y-%m-%dT%H:%M:%S%Ez$ | @DateTimeParse(2017-01-02,ISO) = 20170102 @DateTimeParse(03:04:05+09:00,ISO) = 0300405+09:00 | @DateTimeFormat(20170102,ISO) = 2017-01-02 @DateTimeFormat(20170102030405+09,ISO) = 2017-01-02T03:04:05+09:00 | |
FME|ISO ISO|FME FMEまたはISOの標準日付/時刻書式 | @DateTimeParse(20170102,FME|ISO) = 20170102 @DateTimeParse(2017-01-02,FME|ISO) = 20170102 @DateTimeParse(030405+0900,FME|ISO) = 030405+09:00 @DateTimeParse(03:04:05+09:00,FME|ISO) = 0300405+09:00 | | の前に記述したショートカット(FME、ISOのどちらか一方)と同義。 @DateTimeFormat(20170102,FME|ISO) = 20170102 @DateTimeFormat(20170102,ISO|FME) = 2017-01-02 | |
ワイルドカード | * スペースで区切られた任意の単語(単語の直後にカンマなどの区切り文字がついている場合はそれを含む) | @DateTimeParse(“On Monday, January 23 2017″,”* * %B %d %Y”) = 20170123 @DateTimeParse(“On Monday, January 23 2017″,”* *, %B %d %Y”) = 20170123 | 文字「*」として扱われる。 |
? 任意の一文字 | @DateTimeParse(January 23rd 2017,%B %d?? %Y) = 20170123 @DateTimeParse(LC80460262015110LGN00,LC???????%Y%jLGN??) = 20150420 | 文字「?」として扱われる。 | |
$ 文字列の末尾 | @DateTimeParse(2017-01-02,%Y-%m-%d$) = 20170102 | 文字「$」として扱われる。 | |
特殊文字 | %% 文字「%」 | @DateTimeParse(2017%01%05,%Y%%%m%%%d) = 20170105 | @DateTimeFormat(020304,%T %%) = 02:03:04 % |
%* 文字「*」 | @DateTimeParse(*** 2017-01-05,%*%*%* %Y-%m-%d) = 20170105 | (使用不可) | |
%? 文字「?」 | @DateTimeParse(On Jan 2 2017?,* %b %d %Y%?) = 20170102 | (使用不可) | |
%$ 文字「$」 | @DateTimeParse(2017$01$02,%Y%$%m%$%d) = 20170102 | (使用不可) | |
一般文字 | ワイルドカード、特殊文字以外の任意の文字(英大文字と小文字は区別される) | @DateTimeParse(On Jan 23 2017, On %b %d %Y) = 20170123 | @DateTimeFormat(20170102,On %B %d %Y) = On January 02 2017 |