文字列データを日付データに変換する方法について、伺いたいです。
現在、下記のような条件でJavascriptを作っています。
フィールド:
基準日となる日付フィールド:卒業日
計算結果をセットする日付フィールド:入校日
動き:
"卒業日"の3ヶ月半前の値を自動計算して"入校日"にセット。
条件として入校日は必ず"月曜日"にしたいので、卒業日の3ヶ月半前が、月、火、水の場合、その週の月曜日に自動修正。木、金の場合、翌週の月曜日に自動修正。
上記条件を元にChatGPTで吐き出したコードは下記の通りとなります。
計算結果は問題なく出力できたのですが、データ形式が文字列となっているため、日付フィールドに値が入らずkintone上ではエラーになってしまいます。(文字列フィールドには値が入る)
日付フィールドに値をセットするには、どのような修正を行えば良いかお分かりの方、ご教示いただけますと幸いです。
(function() {
"use strict";
// イベントの種類を取得
var events = ['app.record.create.submit', 'app.record.edit.submit'];
kintone.events.on(events, function(event) {
var record = event.record;
// 出国予定日フィールドの値を取得
var departureDate = new Date(record.卒業日.value);
// 3.5ヶ月前の日付を計算
var calculatedDate = new Date(departureDate.getTime());
calculatedDate.setMonth(calculatedDate.getMonth() - 3);
calculatedDate.setDate(calculatedDate.getDate() - 15);
// 計算された日付の曜日を取得
var dayOfWeek = calculatedDate.getDay();
// 月曜日から木曜日までの場合、その週の月曜日に修正
if (dayOfWeek >= 1 && dayOfWeek <= 4) {
calculatedDate.setDate(calculatedDate.getDate() - (dayOfWeek - 1));
}
// 金曜日の場合、翌週の月曜日に修正
else if (dayOfWeek === 5) {
calculatedDate.setDate(calculatedDate.getDate() + (8 - dayOfWeek));
}
// 土曜日の場合、翌週の月曜日に修正
else if (dayOfWeek === 6) {
calculatedDate.setDate(calculatedDate.getDate() + (9 - dayOfWeek));
}
// 日曜日の場合、翌週の月曜日に修正
else if (dayOfWeek === 0) {
calculatedDate.setDate(calculatedDate.getDate() + 1);
}
// 入校日フィールドに計算結果をセット
record.入校日.value = calculatedDate;
return event;
});
})();