# 日付フィールド+時刻フィールドを日時フィールドに自動で転記したいです。

**URL:** <https://community.cybozu.dev/t/topic/12528>\
**Category:** kintone 開発相談\
**Created:** [2026 年 3 月 31 日午後 11:54 UTC](https://community.cybozu.dev/t/topic/12528 "2026-03-31T23:54:06Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![shimizu-n](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@shimizu-n](https://community.cybozu.dev/u/shimizu-n)\
**Post date:** [2026 年 3 月 31 日午後 11:54 UTC](https://community.cybozu.dev/t/topic/12528/1 "2026-03-31T23:54:06Z")

</div>

### 

こんにちは。

いつも参考にさせていただいております。

休暇申請アプリがあり、レコード内にある時刻フィールドと日付フィールドに値を入力すると

日時フィールドに自動で結合させるコードを作成しました。

PC版のコードは問題なく動いておりますが、モバイル版の方のみエラーが発生するので、

原因をご教授ください。

・エラーが出るフィールド：時刻フィールド

・エラーのタイミング：時刻フィールドに入れた値を一度クリアして、再度入力し直す時

・エラー内容：「時刻の形式が不正です。」

・結果：時刻フィールドの値が入力できない

↓↓↓↓PC版のコードはこちらになります。このコードは正常に動作しています。

(function() {  
‘use strict’;

var showEvent = [

‘app.record.create.change.開始時刻’,

‘app.record.create.change.取得開始日’,

‘app.record.edit.change.取得開始日’,

‘app.record.edit.change.開始時刻’

];

kintone.events.on(showEvent, function(event) {  
var record = event.record;  
var date = record[‘取得開始日’][‘value’];  
var time = record[‘開始時刻’][‘value’];

// 日付フィールドと時刻フィールドに値が設定されていれば日時を算出する  
if (date !== undefined && time !== undefined) {  
record[‘取得開始日時’][‘value’] = date + ‘T’ + time + ‘+09:00’;  
}

// 日時フィールドは手入力させない  
record[‘取得開始日時’][‘disabled’] = true;

return event;  
});

})();

```javascript
(function () {
  'use strict';

  // スマホ用イベント
  var mobileEvents = [
    'mobile.app.record.create.change.取得開始日',
    'mobile.app.record.create.change.開始時刻',
    'mobile.app.record.edit.change.取得開始日',
    'mobile.app.record.edit.change.開始時刻'
  ];

  kintone.events.on(mobileEvents, function (event) {
    var record = event.record;
    var date = record['取得開始日'].value;
    var time = record['開始時刻'].value;

    // 日付と時刻が両方入っている場合のみ結合
    if (date !== undefined && time !== undefined) {
      record['取得開始日時'].value = date + 'T' + time + '+09:00';
    }

    // 手入力不可にする
    record['取得開始日時'].disabled = true;

    return event;
  });
})();

```

---

<div class="post-metadata">

**Author:** ![riogrande](https://avatars.discourse-cdn.com/v4/letter/r/ec9cab/32.png) [@riogrande](https://community.cybozu.dev/u/riogrande)\
**Post date:** [2026 年 4 月 1 日午前 6:03 UTC](https://community.cybozu.dev/t/topic/12528/2 "2026-04-01T06:03:41Z")

</div>

お世話になります。

mobileの日時の持たせ方でエラーになるのではとパッと見ですが感じました。

undefinedではないなら条件通過しそうなので

値があるかないかにしてみてはどうでしょうか？

if (date && time) {  
record[‘取得開始日時’].value = date + ‘T’ + time + ‘+09:00’;  
} else {  
// どちらか空なら日時もクリア  
record[‘取得開始日時’].value = ‘’;  
}

---

<div class="post-metadata">

**Author:** ![wv-sumichan](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/wv-sumichan/32/1665_2.png) [@wv-sumichan](https://community.cybozu.dev/u/wv-sumichan)\
**Post date:** [2026 年 4 月 1 日午前 6:30 UTC](https://community.cybozu.dev/t/topic/12528/3 "2026-04-01T06:30:32Z")

</div>

スマホ版の時刻フィールドは、 PC 版と違って **時** と **分** を別々に選ぶ UI になっています。

で、私も前に引っかかったことがあるのですが、なぜか **時と分どちらかが空欄の場合は `undefined`** になり、なぜか **そのまま `return event` すると `undefined` が時刻フィールドに再セットされます** 。

つまり、時刻フィールドの変更イベントの最後で `return event` を必ず行うと、時か分のどちらかを入力したタイミングで常に `undefined` が設定される = 入力してもすぐクリアされる、という挙動になります。

調べてみたら、過去にも同じ現象で困っていた方がいらっしゃったみたいです。

> [@モバイル画面での時刻の自動入力について（形式不正エラーへの対処）](https://community.cybozu.dev/t/topic/5749):
>
> キントーンカスタマイズの初心者です。 製造現場での時刻入力を簡素化するために、時刻項目をchangeイベントに登録して、現在時刻を自動入力するスクリプトを作成しました。以下はコード（抜粋）です。 &nbsp; &nbsp; &nbsp; var record = event.record; &nbsp; &nbsp; &nbsp; if (record[‘時刻修正’][‘value’].length &nbsp;\< 1) { &nbsp; &nbsp; &nbsp; &nbsp; var tabl…

* * *

対処法としては、裏ワザというかあまり推奨される方法ではないのですが、

- 時刻フィールドの変更時イベントでは、時と分の両方が埋まった (= `undefined` じゃなかった) 場合のみ `return event` をする

という方法しかないのではないかと思います。過去の記事でもその方法で対応されているっぽいです。

ただ、日付フィールドはそのような問題が起きないので、ちゃんと最後に `return event` を行ったほうがいいです。なので日付フィールドと時刻フィールドでイベントハンドラを分けておくのが良いと思います。

---

<div class="post-metadata">

**Author:** ![shimizu-n](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@shimizu-n](https://community.cybozu.dev/u/shimizu-n)\
**Post date:** [2026 年 4 月 3 日午前 4:16 UTC](https://community.cybozu.dev/t/topic/12528/4 "2026-04-03T04:16:50Z")

</div>

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

みなさまのおかげで無事実現できました。

ありがとうございます！

undefinedをなくすことでモバイル版でも正常に動くようになりました。

```javascript

if (date && time) {
   record['取得終了日時'].value = date + 'T' + time + ':00+09:00';
} else {
  record['取得終了日時'].value = null;
}

return event;
 
 });
})();

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2026 年 4 月 6 日午前 4:17 UTC](https://community.cybozu.dev/t/topic/12528/5 "2026-04-06T04:17:39Z")

</div>

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。
