計算結果を25時表記にしたい

勤怠管理や日報で、開始時刻(仮に9:00とします)に作業時間を足して終了時間としたい場合に、終了時刻を計算フィールド(時刻(例:2:03))で作って

開始時刻+作業時間

で求めてますが、作業時間が15時間の場合に24時とならず0時となってしまう為、

もう1つ文字列フィールドを作って

DATE_FORMAT(作業終了時間,“k:mm”,“Etc/GMT”)

としたところ15時間であれば24:00になったのですが、16時間だと1:00になってしまいます。

これを25:00にする事は可能でしょうか。(30時まで対応したいです)

標準機能の計算機能では難しいのでカスタマイズが必要になりますが、Day.js等のライブラリを使えば簡単に求められます。以下なら400:00とかでも作れますが、終了時刻フィールドは文字列になります。また、開始時刻フィールドは時刻フィールド、作業時間は1時間単位の数字入力前提で考えています。分単位の入力等の場合はそれに合わせて変えて下さい(回答側はこの辺りの情報が欲しいので、その辺りも載せると回答が付きやすいかもしれません)。

Day.jsはこちらから読み込んで下さい。

(() => {
    'use strict';

    let startTimeField = '開始時刻';
    let workTimeField = '作業時間';
    let endTimeField = '終了時刻';

    kintone.events.on([
        `app.record.create.change.${startTimeField}`, `app.record.edit.change.${startTimeField}`,
        `app.record.create.change.${workTimeField}`, `app.record.edit.change.${workTimeField}`
    ], (event) => {
        let record = event.record;

        if (!record[startTimeField].value || !record[workTimeField].value) return event;

        let startTime = `${dayjs().format('YYYY-MM-DD')}T${record[startTimeField].value}`;
        let startHour = dayjs(startTime).format('H');
        let endHour = Number(startHour) + Number(record[workTimeField].value);

        record[endTimeField].value = `${endHour}:${dayjs(startTime).format('mm')}`;

        return event;
    });
})();

mls-hashimoto様>

ご教示ありがとうございます。終了時刻フィールドは文字列でも問題ないのでご教示頂いたスクリプトを試してみます。

 

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