お世話になっております
日付フィールド(テーブル外)
時刻フィールド(テーブル内)
日時フィールドがあり(テーブル内)
日付と時刻フィールドを合わせた結果を日時フィールドに代入したいのですが
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時より前)はどのように行えばよいのでしょうか
宜しくお願い致します
こんにちは
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;
});
})();
上記で正常に動作致しました
お忙しい中ご返信いただきまして、ありがとうございました