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;