新規投稿
フォローする

日付の比較と加算について

お世話になっております

日付フィールド(テーブル外)

時刻フィールド(テーブル内)

日時フィールドがあり(テーブル内)

日付と時刻フィールドを合わせた結果を日時フィールドに代入したいのですが


 
    var record = event.record;
    var tableData = record.T_営業の流れ.value;

    for(var i=0; i<tableData.length; i++) {
        var row = tableData[i].value;
        
            row.開始日時.value = record.日付.value + ' ' + row.開始時刻.value;
        
            row.終了日時.value = record.日付.value + ' ' + row.終了時刻.value;


    }



そこまでは上記コードでうまく行きました

 

営業日の時刻が深夜12時を回った時点以降は(時刻が6時より前なら)翌日の日付として処理したいのですが

日付 2021/07/01 時刻 21:00 >>> 日時 2021/07/01 21:00

日付 2021/07/01 時刻 1:00 >>> 日時 2021/07/02 1:00

日付 2021/07/01 時刻 7:00 >>> 日時 2021/07/01 7:00

日付の加算(翌日にする)や、時間の比較(6時より前)はどのように行えばよいのでしょうか

宜しくお願い致します

0

2件のコメント

Avatar
mionix

こんにちは

luxonライブラリを使用して日付計算を行うのが良いかと思います。

https://developer.cybozu.io/hc/ja/articles/900000985463-Luxon-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-kintone-%E3%81%AE%E6%97%A5%E4%BB%98%E3%82%84%E6%97%A5%E6%99%82%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%99%E3%82%8B 

luxonについては上記記事が参考になります。

開始だけですが下記のような記述になるかと思います。

入力された開始時刻が6時より小さい場合、1日プラスして開始日時に挿入します。

だいぶ無理やりでもっといい方法があるかもしれませんが、ご参考までに...

(function () {
  luxon.Settings.defaultLocale = 'ja';
  'use strict';
  kintone.events.on(['app.record.create.change.開始時刻'], function (event) {
    var record = event.record;
    var start = luxon.DateTime.fromISO(record['テーブル']['value'][0]['value']['開始時刻']['value']).hour;
    if (start < 6) {
      for (var i = 0; i < record['テーブル']['value'].length; i++) {
        record['テーブル']['value'][i]['value']['開始日時']['value'] = luxon.DateTime.fromISO(record['日付']['value']).plus({
          day: 1
        }).toFormat('yyyy-MM-dd') + ' ' + record['テーブル']['value'][i]['value']['開始時刻']['value'];
      }
    } else {
      for (var i = 0; i < record['テーブル']['value'].length; i++) {
        record['テーブル']['value'][i]['value']['開始日時']['value'] = luxon.DateTime.fromISO(record['日付']['value']).toFormat('yyyy-MM-dd') + ' ' + record['テーブル']['value'][i]['value']['開始時刻']['value'];
      }
    }
    return event;
  });
})();

 

mionixにより編集されました
0
Avatar
FP

上記で正常に動作致しました

お忙しい中ご返信いただきまして、ありがとうございました

0
サインインしてコメントを残してください。