日時フィールドからJavaScriptで指定の日時に変換して、再度日時フィールドへ値を返したい

<やりたいこと>

日時フィールドAに値を入力した時、または値を編集した時に、日時フィールドAに入れた日時よりも、○分前の日時を別の日時フィールドBに入れたいです。

※リマインダー機能を使いたいため、フィールド形式は日時フィールドにしたいです。

 

<実行したこと>

・日時フィールドAと日時フィールドBを作成

・JavaScriptで、日時フィールドAの日時を日本標準時間に直し、それから○分前の日時を計算し、また協定世界時間に戻したものを、日時フィールドBに入れる。

 

<エラーになる部分>

日時フィールドAから○分前の日時までは実現できましたが、それを協定世界時間に戻して、日時フィールドBへ入れることができません。

コードのtoUTCString();の部分を、toString();やtoGMTString();にして試しましたが、エラーとなり動きません。

また、kintoneアプリ上に出るエラーは下記です。


エラー

・カスタマイズ用のJavaScriptの実行時にエラーが発生しました。アプリの管理者にお問い合わせください。

・- event.record[‘日時フィールドB’].value が不正です。


 

<コード>

(function() {

"use strict";

//日時フィールドA から5分前の日時を 日時フィールドB へ入力
var events = ['app.record.create.change.日時フィールドA','app.record.edit.change.日時フィールドA'];

kintone.events.on(events, function (event){
var record = event.record;
var date1 = record['日時フィールドA']['value'];
var dt = new Date(date1);

var date0 = dt.getTime() - 300000;
var date2 = new Date(date0);

var year = date2.getFullYear()
var month = date2.getMonth()+1;
var date = date2.getDate();
var hours = date2.getHours();
var minute = date2.getMinutes();

date2 = (year+'/'+month+'/'+date+'/ '+hours+':'+minute);

var utcdt = date2.toUTCString();

event.record['日時フィールドB']['value'] = utcdt;

return event;
});
})();

NKIさん

お世話になっております。

各フィールドの形式は下記で確認できます。
https://developer.cybozu.io/hc/ja/articles/202166330

日時フィールドのvalueは下記のような形式かと思います。

"2012-01-11T11:30:00Z"

Date.toISOStringを使用することでそちらの形式になるかと思います。

江田篤史 様

コメントありがとうございます。

日時フィールドに返す値をご指摘いただいた形式に直す処理を入れました。

無事ほしい値を日時フィールドBに入れることができました。

ありがとうございます。