Edited at

ALEXAビルトインライブラリAMAZON.DATE使用上の注意

dateスロットにALEXAビルトインライブラリAMAZON.DATEをセットして、日付情報(仮にstrと定義)を受けとり、それをDate関数に代入する場合、いくつかの注意点があるので、まとめておく。


AMAZON.DATE の特徴

① 2019年1月1日というと、文字列”2019-01-01”を返す。ただ、

② 2019年1月というと、文字列"2019-01-00"を返すので注意が必要。また、

③ 2019年というと、何も返さないという特徴がある。


① ”2019-01-01”の場合

日付を指定された場合、そのまま以下でDate関数に代入できる。

    let str = slots.date.value;

let year = Number(str.substr(0,4));
let month = Number(str.substr(5,2))-1;
let day = Number(str.substr(8,2));
let date = new Date(year, month, day);


② "2019-01-00"の場合

月だけを指定された場合、day=0になってしまう。月の初日(〇月1日)を表現するためには、強制的にday=1とする必要がある。

    if (day === 0){

day = 1;
}


③ 何も返さない場合

年だけを指定された場合、AMAZON.DATEでは受け取れないので、代わりに、yearスロットにALEXAビルトインライブラリAMAZON.FOUR_DIGIT_NUMBERをセットして、年情報を受け取る。元日(1月1日)を表現するためには、以下の処理を行う。

    let str = slots.year.value;

let year = Number(str.substr(0,4));
let date = new Date(year, 0, 1);


Date関数の値の差を日、時間、分、秒で表現する

    let date1 = new Date(year1, month1, day1);

let date2 = new Date(year2, month2, day2);
let dif = date2-date1;

let difday = Math.floor(dif/1000/60/60/24);
let difhour = Math.floor(dif/1000/60/60)%24;
let difmin = Math.floor(dif/1000/60)%60;
let difsec = Math.floor(dif/1000)%60;