みんなの投稿

2025/07/06 23:58

kintoneでシフト勤務や日をまたぐ作業を管理するアプリを作成しています。
勤務や休憩が日をまたぐ場合の「休憩重複時間」の自動計算で困っています。

■ やりたいこと
勤務や休憩の開始・終了時刻は時刻フィールド(例:19:00、0:51)
シフトによって休憩時間が異なり、深夜帯の休憩(例:23:00~0:00)もある
勤務や休憩が日をまたぐ場合も、重複する休憩時間を自動で差し引きたい

■ 試したこと
各時刻を「秒」に変換し、日またぎ時は「終了時刻 < 開始時刻」の場合「+86400」で翌日扱いにする方法を検討

例:
★勤務開始:19:00(68,400秒)
★勤務終了:0:51(3,060秒)
★休憩開始:23:00(82,800秒)
★休憩終了:0:00(0分→+86400で一周回って0秒)
★休憩重複時間の計算式:
IF(
AND(
勤務開始 < 休憩終了,
勤務終了 > 休憩開始
),
IF(勤務終了 < 休憩終了, 勤務終了, 休憩終了)
-
IF(勤務開始 > 休憩開始, 勤務開始 休憩開始),
0
)

■ 困っていること
上記の工夫をしても、休憩終了時刻が「0:00」の場合、重複時間が0分になってしまう
本来は「23:00~0:00」で1時間(60分)重複してほしい
kintone標準関数のみ(プラグインやJavaScriptなし)で実現したい

■ 質問
日またぎ休憩(例:23:00~0:00)や日またぎ勤務(例:19:00~0:51)でも正しく重複時間を計算できるロジックや計算式のアイデアはありませんか?

もし同じ課題を解決した方がいれば、フィールド設計や計算式の具体例を教えていただけると助かります。

2件のコメント (新着順)

(既に解決済みのようなので、スルーしていただいて結構です。)

[勤務開始 ](※)、[勤務終了]を日時フィールドにするというのはいかがでしょうか?
(※:「✅レコード登録時の日時を初期値にする」にしておくと、新規レコードの編集画面に遷移すると自動的にそのときの日時が入る。⇒編集画面遷移をタイムカード押しのように扱えます。)

勤務終了 - 勤務開始日付によらない総時間数で取得できるので、休憩時間も1時間とか1.5時間とかの直値で計算できるようになると思います。


Marin
2025/07/07 13:24

ありがとうございます!
開始時刻とかを日時にできればすべて解決ですよね!
今回ユーザーの希望で日付と時刻にしましたがそもそも分ける必要があるか
というところから議論すべきなのかもしれません🙂‍↕️

ふゆき
製造業
2025/07/07 07:33

キンコミ内を検索してみました

やまぐち さんの回答コメント

これ👆じゃー、ダメですかね


Marin
2025/07/07 07:42

ありがとうございます!リンク先確認しましたが、
重複時間の計算式で休憩時間が含まれているかどうか判定しているのですが
kintoneの時刻フィールドは「0:00」を「0」と扱うため、+1日としても0になってしまうんです。

ふゆき
製造業
2025/07/07 08:16

大変失礼いたしました
「0:00」限定と云うことだと

「23:59」の数値は「86340」だから
「86400」と 入力された テンポラリを用意しておいて
終了時刻が「0:00」の値の時のみ、計算式はそこを対象になる
IFにすると云うのはどうでしょう?

-----------
ん~~、ダメっぽいです

日時フィールドで解決したようなので
そちらが良いと思います

Marin
2025/07/07 08:46

なるほど!確かにその手も行けそうです!

今回格闘した結果
1.日付と時刻を足して「日時」にする
○日付フィールド + 時刻フィールド
○これで「2025-07-03 19:00」のような日時が作れます。

2.JST(日本時間)で計算したい場合は「9時間引く」
○kintoneの時刻は内部的にUTC(協定世界時)で扱われるため、
日本時間で正しい時刻を得るには「-9時間」の補正が必要。
○日付 + (時刻 - "09:00")

3.開始と終了を比べて、終了の方が小さければ「+86400秒(1日分)」を足す
○日またぎ(例:19:00~翌0:51など)では、終了が開始より小さい場合がある。
この場合、「+86400」(1日=24時間=86400秒)を終了日時に加えて計算。

【計算式イメージ】
勤務開始日時
日付 + (開始時刻 - "09:00")

勤務終了日時
IF(終了時刻 >= 開始時刻, 日付 + (終了時刻 - "09:00"), (日付 + 1) + (終了時刻 - "09:00"))

勤務時間(秒)
勤務終了日時 - 勤務開始日時

これで実現できました!アドバイスありがとうございました🫡