日付取得

FORMAT1 {%DATE(日付書式,[日時加減算式])}

日付書式には、日付を表す日付記号を記述します。日付記号は下記を参照してください。

日付記号

内容

yy

西暦の年を下 2 桁の数値で返します (00 ~ 99)。

yyyy

西暦の年を 4 桁の数値で返します (100 ~ 9999)。

M

月を表す数値を返します。1 桁の場合、先頭に 0 が付きません (1 ~ 12)。1文字だけ単独で使用する場合は、%Mと記述します。

MM

月を表す数値を返します。1 桁の場合、先頭に 0 が付きます (01 ~ 12)。

d

日付を返します。1 桁の場合、先頭に 0 が付きません (1 ~ 31)。1文字だけ単独で使用する場合は、%dと記述します。

dd

日付を返します。1 桁の場合、先頭に 0 が付きます (01 ~ 31)。

ddd

曜日を英語 (省略形) で返します (Sun ~ Sat)。

aaa

曜日を日本語 (省略形) で返します (日~土)。

aaaa

曜日を日本語で返します (日曜日~土曜日)。

g

年号の頭文字を返します (M、T、S、H)。1文字だけ単独で使用する場合は、%gと記述します。

gg

年号の先頭の 1 文字を漢字で返します (明、大、昭、平、令)。

ggg

年号を返します (明治、大正、昭和、平成、令和)。

e

年号に基づく和暦の年を返します。1 桁の場合、先頭に 0 が付きません。1文字だけ単独で使用する場合は、%eと記述します。

ee

年号に基づく和暦の年を 2 桁の数値を使って返します。1 桁の場合、先頭に 0 が付きます。

H

時間を返します。1 桁の場合、先頭に 0 が付きません (0 ~ 23)。1文字だけ単独で使用する場合は、%Hと記述します。

HH

時間を返します。1 桁の場合、先頭に 0 が付きます (00 ~ 23)。

m

分を返します。1 桁の場合、先頭に 0 が付きません (0 ~ 59)。1文字だけ単独で使用する場合は、%mと記述します。

mm

分を返します。1 桁の場合、先頭に 0 が付きます (00 ~ 59)。

s

秒を返します。1 桁の場合、先頭に 0 が付きません (0 ~ 59)。1文字だけ単独で使用する場合は、%sと記述します。

ss

秒を返します。1 桁の場合、先頭に 0 が付きます (00 ~ 59)。

fff

ミリ秒を返します。先頭に 0 が付きません。

/

日付の区切り記号

日時加減算式は省略可能です。記述すると日付の加減算が行えます。日時加減算式はXYZの3つのデータで構成されます。

Xの部分には、「-」又は「+」が記述できます。日時を減算する場合は「-」、加算する場合は「+」を記述します。

Yの部分には、数字を記述できます。Zで示される単位についての値になります。

Zの部分には、単位を表す記号を記述できます。

日時加減算式は「+1d」「-2M」のように、X・Y・Z を続けて1つだけ記述します。正しくない日時加減算式(「+1D」「1d」「+1d+2h」など)を記述した場合は、エラーになります(Version 2.7.0 から。それより前は、加減算をせずに処理を続けていました)。

単位記号

内容

q

四半期

y

年

M

月

d

日

w

週

h

時

m

分

s

秒

以下、実行した日時が 2019年5月1日 12時5分10秒351ミリ秒の場合

例1 「2019/05/01」に置換したい場合

{%DATE(yyyy/MM/dd)}

例2 「2019/5/1」に置換したい場合

{%DATE(yyyy/M/d)}

例3 「令和1年5月1日」に置換したい場合

{%DATE(ggge年M月d日)}

例4 「190501」に置換したい場合

{%DATE(yyMMdd)}

例5 「2019/05/01 12:05」に置換したい場合

{%DATE(yyyy/MM/dd HH:mm)}

例6 「2019/05/01 12:05:10 351」に置換したい場合

{%DATE(yyyy/MM/dd HH:mm:ss fff)}

例7 翌日の日付に置換したい場合

{%DATE(yyyy/MM/dd,+1d)}

例9 10時間前の日時に置換したい場合

{%DATE(yyyy/MM/dd HH:mm,-10h)}

例10 年度(1~3月は前年度にする)に置換したい場合

{%IF({%START_DATE(ファイルの繰り返し1,%M)}<4,{%START_DATE(ファイルの繰り返し1,yyyy,-1y)},{%START_DATE(ファイルの繰り返し1,yyyy)})}

※Mを単独で使用する場合は%Mと記述します。
また、DATEマクロはマクロ毎にシステム日付を取得するので、0時付近に処理をすると日付が変わるので、上記のようにファイルの繰り返しが始まった時間を取得するSTART_DATEマクロを使ってください。
処理開始時の日時取得

FORMAT1 {%START_DATE(処理名,日付書式,[日時加減算式])}

処理名には開始日時を取得したい処理名を指定します。日付書式、日付記号は日付取得マクロと同じ仕様です。

日時加減算式は省略可能で、日付取得マクロと同じ仕様です。

このマクロは処理の開始時の日時を取得するので、複数ページに同じ日付や時刻をテキストアノテーションで貼り付けたい場合などに使用します。上記の「日付取得」マクロにおいては、処理の実行時の日時を取得するため、0時直前などに複数ページの貼り付け処理が行われた場合、途中で日付が変わってしまう可能性があります。

以下、ファイルの繰り返し処理で、実行した日時が 2019年5月1日 12時5分10秒351ミリ秒の場合

例1 「2019/05/01」に置換したい場合

{%START_DATE(ファイルの繰り返し1,yyyy/MM/dd)}
処理開始時の日時設定

FORMAT1 {%SET_START_DATE(処理名,日付書式)}

処理名には開始日時を設定したい処理名を指定します。日付書式は「yyyy/MM/dd HH:mm:ss fff」の形式で指定します。(「HH:mm:ss fff」や「fff」は省略することができます。)

このマクロは処理開始時の日時取得(START_DATE)を使用する場合や、連番取得とカウントアップマクロ(GET_SEQ_NO_AND_COUNT_UP)で処理開始時をリセット判定で使用する場合に、任意の日付をセットしてテストを行うために使用します。

例1 ファイルの繰り返し1の処理開始日時を「2023/04/01」に設定したい場合

{%SET_START_DATE(ファイルの繰り返し1,2023/04/01)}
日付形式判定

FORMAT1 {%IS_DATE(日時)}

日時には、日付(yyyy/MM/dd)又は、日時(yyyy/MM/dd HH:mm:ss)の形式で日付又は日時を指定します。指定された日時が日時として認識できる場合はTrueを、認識できない場合はFalseを返却します。

例1 「2020/12/32」が日付として認識できるか判定する場合

{%IF({%IS_DATE(2020/12/32)}=True,
  {%WRITE_LOG(日付正常)}
,
  {%WRITE_LOG(日付不正)}
)}
結果
日付不正
日付加減算

FORMAT1 {%DATE_ADD(日時,日付書式,[日時加減算式])}

引数の日時を対象に日時加減算式で計算を行い、日付書式にしたがってフォーマットした日時を返却します。

日付書式、日時加減算式はDATEマクロと同じです。

以下、設定例です。

例1 「2021/1/1」に1日加算する場合

{%WRITE_LOG({%DATE_ADD(2021/01/01,yyyy/MM/dd,+1d)})}
結果
2021/01/02

例2 「2021/01/01 01:00:00」から2時間減算する場合

{%WRITE_LOG({%DATE_ADD(2021/01/01 01:00:00,yyyy/MM/dd  HH:mm:ss,-2h)})}
結果
2020/12/31  23:00:00

例3 「2020/12/31 23:00:00」に2時間加算する場合

{%WRITE_LOG({%DATE_ADD(2020/12/31 23:00:00,yyyy/MM/dd  HH:mm:ss,+2h)})}
結果
2021/01/01  01:00:00
日付差分取得

FORMAT1 {%DATE_DIFF(日時1,日時2,日時単位)}

引数の日時1から日付2を減算して、日時単位で指定された単位で返却します。

日時単位には以下の記号を指定します。

単位記号

内容

d

日

h

時

m

分

s

秒

以下、設定例です。

例1 「2017/9/13」の「1899/12/30」からの日数を取得する場合(Excelで扱う日付のシリアル値の取得)

{%WRITE_LOG({%DATE_DIFF(2017/9/13,1899/12/30,d)})}
結果
42991

解説

Excelで扱う日付のシリアル値は、1900/1/1を1とした経過日数ですが、Excelが1900/2/29という存在しない日をカウントする仕様のため、この仕様に合わせた数値を取得するためには、1899/12/30からの経過日数を取得します。

例2 「2022/8/30 19:46:00」の「1970/1/1 9:00:00」からの経過秒数を取得する場合(UNIX時間の取得)

{%WRITE_LOG({%DATE_DIFF(2022/8/30 19:46:00,1970/01/01 09:00:00,s)})}
結果
1661856360

解説

UNIX時間は協定世界時 (UTC) での1970年1月1日午前0時0分0秒からの経過秒数ですが、日本時間はUTC時間+9時間ですので、1970/01/01 09:00:00としています。

和暦取得

FORMAT1 {%CALENDAR_JP(年月日,結果格納先ユーザーデータ名,[和暦定義ファイル])}

和暦はDATEマクロでも取得できますが、元号が変わった場合の対応を考慮して、定義ファイル(CSV形式)から情報を取得して、変換する処理を提供します。定義ファイルに元号と開始年月日を記述することで将来の元号にも対応できます。

年月日には、和暦に変換したい日付(yyyyMMdd)を指定します。

結果格納先ユーザーデータ名には結果を格納するユーザーデータの名前を指定します。和暦の情報は以下のキーで取得できます。

キー

内容

元号

指定した年月日の元号(令和,平成,昭和,大正,明治)

元号記号

指定した年月日の元号記号(R,H,S,T,M)

年

指定した年月日の和暦の年

月

指定した年月日の和暦の月

日

指定した年月日の和暦の日

本マクロは和暦定義ファイルを参照して処理しています。和暦定義ファイルは省略可能です。省略した場合は、eDocArrangementのインストールフォルダにある「Wareki.ini」を参照します。指定した場合は指定したファイルを読み込みます。和暦定義ファイルは以下のフォーマットでデータを作成してください。(「Wareki.ini」も参考にしてください。)

項目1

項目2

項目3

開始年月日

元号

元号記号

和暦定義ファイルはカンマ区切りとします。ヘッダ行は記述せず1行目から定義してください。また、日付は降順(新しい日付が上)に定義してください。

以下、設定例です。

例1 「2016/03/03」の和暦(元号 + 年)をログに出力する場合

{%CALENDAR_JP(20160303,和暦)}
{%WRITE_LOG({%GET_USER_DATA(和暦,元号)}{%GET_USER_DATA(和暦,年)}年)}

例2 今日の日付の和暦(元号記号 + 年 + 月 + 日)をログに出力する場合

{%CALENDAR_JP({%DATE(yyyyMMdd)},和暦)}
{%WRITE_LOG({%GET_USER_DATA(和暦,元号記号)}{%GET_USER_DATA(和暦,年)}年{%GET_USER_DATA(和暦,月)}月{%GET_USER_DATA(和暦,日)}日)}
営業日取得

FORMAT1 {%BUSINESS_DATE(日付,前又は翌営業日(Before|After),祝祭日ユーザーデータ名,休日ユーザーデータ名)}

FORMAT2 {%BUSINESS_DATE(日付,日数指定,祝祭日ユーザーデータ名,休日ユーザーデータ名)}

本マクロは、2営業日後や、1営業日前などの、指定した日付からの営業日日数を計算した日付を取得する機能(機能1)と、指定した休日日付の翌営業日、または前営業日を取得する機能(機能2)を利用できます。

日付には、yyyy/MM/dd、yyyy/M/dなどの形式で日付を指定します。

2番目の引数について、

機能1では、未来日付の営業日日数を指定する場合は、正の整数を、過去日付の営業日日数を指定する場合は、負の整数を指定します。(例 2営業日後は2、1営業日前は-1)

日付に祝祭日又は休日を指定し、0を指定した場合は、After(翌営業日)を指定した場合と同じになります。

機能2では、翌営業日を指定する場合はAfterを、前営業日を指定する場合はBeforeを指定します。どちらを指定した場合でも、指定した日付が営業日の場合は、指定した日付をそのまま返却します。

祝祭日ユーザーデータ名には、CSVファイル読み込みマクロ(READ_CSV_FILE)で読み取ったCSVデータの格納ユーザーデータ名を指定します。

祝祭日CSVファイルは、キーに祝祭日の日付が格納されていれば、他はどんなデータでもかまいません。日付の形式は、yyyy/MM/dd又は、yyyy/M/dに対応しています。

おすすめは、内政府が公開している祝祭日CSVデータです。以下のページからダウンロードできます

内政府 国民の休日について

https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html

このページの国民の祝日の表の下にダウンロードのリンクがあります。(CSVのリンクは変わる可能性があります。)

内政府 国民の休日CSVファイルのダウンロード

https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv

このCSVファイルは以下のようになっています。

国民の祝日・休日月日,国民の祝日・休日名称
1955/1/1,元日
1955/1/15,成人の日
1955/3/21,春分の日
・
・
2020/9/22,秋分の日
2020/11/3,文化の日
2020/11/23,勤労感謝の日

この場合、1列目が日付になっていますので、CSVファイル読み込みマクロ(READ_CSV_FILE)で読み込む場合は、以下のようになります。

#祝祭日CSV読み込み
{%READ_CSV_FILE({%GET_G(TopFolder)}\90_System\10_マスタ\syukujitsu.csv,祝祭日,SJIS,1,2,1,番号)}

休日ユーザーデータ名は、休日の曜日をキーにセットしたユーザーデータを指定します。以下のような記述になります。

#休日指定
{%SET_U(休日,土,)}
{%SET_U(休日,日,)}

以下、カレンダーが以下のような場合の例となります。

02/07(金)
02/08(土)
02/09(日)
02/10(月)
02/11(火) 建国記念の日
02/12(水)

例1 営業日取得の例

#祝祭日CSV読み込み
{%READ_CSV_FILE({%GET_G(TopFolder)}\90_System\10_マスタ\syukujitsu.csv,祝祭日,SJIS,1,2,1,番号)}

#休日指定
{%SET_U(休日,土,)}
{%SET_U(休日,日,)}

#翌営業日取得
{%WRITE_LOG({%BUSINESS_DATE(2020/02/08,After,祝祭日,休日)})} 

結果
2020/02/10

#前営業日取得
{%WRITE_LOG({%BUSINESS_DATE(2020/02/08,Before,祝祭日,休日)})} 

結果
2020/02/07

#営業日を指定した場合は、指定した営業日がそのまま返却される
{%WRITE_LOG({%BUSINESS_DATE(2020/02/07,After,祝祭日,休日)})} 

結果
2020/02/07

#2営業日後の日付を取得
{%WRITE_LOG({%BUSINESS_DATE(2020/02/08,2,祝祭日,休日)})}

結果
2020/02/12

#2営業日前の日付を取得
{%WRITE_LOG({%BUSINESS_DATE(2020/02/12,-2,祝祭日,休日)})}

結果
2020/02/07

#休みの日で0営業日後を指定した場合はAFTERと同じ結果になる
{%WRITE_LOG({%BUSINESS_DATE(2020/02/11,0,祝祭日,休日)})}

結果
2020/02/12