LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-12-21

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;
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0