2つの日時間の勤務時間を計算
2026年7月24日金曜日の15:00(UTC)に受け付け、27日月曜日の11:30に完了した問い合わせの勤務時間は4.5時間、270分です。週末と営業時間帯の外は数えないので、サポートの目標管理や障害報告に使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 開始日時
- 2026-07-24T15:00:00Z
- 終了日時
- 2026-07-27T11:30:00Z
- 勤務秒数
- 16,200
- 勤務分数
- 270
- 勤務時間
- 4.5
- 勤務開始時刻
- 09:00
この計算ツールは、明示された日時区間のうち、月曜日から金曜日までの日次UTC営業時間帯に重なる部分だけを測定します。タイムゾーン付きISO日時を受け取り、決定的な暦計算で両端をUTCへ変換し、土曜日と日曜日を除外します。既定の09:00~17:00を使うことも、同じ日の別の時間帯を指定することもできます。結果には正確な秒数と、確認しやすい分数・時間数が含まれます。
区間と営業時間帯を正確に指定します
タイムゾーンを必須にすることで、ローカル時刻が実行環境ごとに異なる瞬間を示す問題を防ぎます。開始は含み、終了は含まないため、連続する区間を境界の二重計上なしで合算できます。営業時間帯の既定値は09:00~17:00 UTCです。
両端は同じUTC日内にあり、終了は開始より後でなければなりません。勤務日の帰属が曖昧になるため、夜間をまたぐシフトは受け付けません。実際に重なる時間だけを数えるので、金曜日の残りを加算し、土日を飛ばして月曜日から再開できます。
祝日は国、地域、業種、勤務先によって異なるため、自動では除外しません。
決定的なUTC計算の仕組み
指定された各オフセットは、グレゴリオ暦の整数演算によってUTCの瞬間へ変換されます。ネットワークや乱数も使用しません。その後、区間が触れる上限付きのUTC日を順に処理します。
月曜日から金曜日には候補時間帯を置き、土曜日と日曜日には置きません。各平日について、要求区間と開業・終業時刻の共通部分を求め、正の秒数だけを加えます。この方法により最初と最後の不完全な日も正しく扱い、同じ瞬間を表す異なるオフセットは同じ結果になります。
同じ両端は0となり、終了が開始より前の場合はエラーです。
運用業務で結果を活用します
サポート部門では、夜間や週末を社内目標へ算入せず、チケットが消費した勤務時間を測れます。運用部門では、元データのオフセットが異なっても、インシデントの確認から復旧までを共通の時計で比較できます。経理や専門サービス部門では、独自の請求規則を適用する前に、時刻付き活動を検証可能な勤務時間へ変換できます。
元の両端、選択したUTC時間帯、返された秒数を一緒に保存してください。現在日、サーバーのタイムゾーン、外部カレンダーに依存しないため、後から同じ結果を再現できます。祝日、地域固有の週末、休憩、交代勤務、夏時間付き現地時刻、夜勤は別の暦対応層で処理してください。
本機能はテスト、合算、説明が容易な透明なUTC基準を提供します。
活用例
サポートSLAの測定
チケットの作成から解決まで、営業時間帯に含まれる時間だけを数えます。
インシデント時間の報告
オフセット付きイベントをUTC日程へ統一し、週末を除外します。
監査可能なサービス時間
隠れた地域規則なしで、請求や順守に使える決定的な勤務秒数を生成します。
よくある質問
除外される曜日はいつですか?
UTCの土曜日と日曜日です。祝日や地域固有の週末は含みません。
営業時間帯は夏時間に従いますか?
いいえ。 時間帯はUTCで明示されているため、季節の時刻変更でも変わりません。
夜間勤務を設定できますか?
できません。 開始と終了は同じUTC日内で、終了が開始より後である必要があります。
終了時刻も時間に含まれますか?
含まれません。開始の時点は数え、終了の時点は数えないため、シフトごとや日ごとの連続した区間を足しても、つなぎ目を二重に数えることはありません。
日時にタイムゾーンの指定は必要ですか?
必要です。各日時にUTCの印か明示的な時差を付けてください。時差のない現地時刻はコンピューターによって別の瞬間を指すことがあるため、推測せずにすべてUTCに換算します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/working-hours-between \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start_datetime":"2026-07-24T15:00:00Z","end_datetime":"2026-07-27T11:30:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/working-hours-between", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start_datetime": "2026-07-24T15:00:00Z",
"end_datetime": "2026-07-27T11:30:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/working-hours-between",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start_datetime": "2026-07-24T15:00:00Z",
"end_datetime": "2026-07-27T11:30:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/working-hours-between", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start_datetime":"2026-07-24T15:00:00Z","end_datetime":"2026-07-27T11:30:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start_datetime":"2026-07-24T15:00:00Z","end_datetime":"2026-07-27T11:30:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/working-hours-between", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"start_datetime": "2026-07-24T15:00:00Z",
"end_datetime": "2026-07-27T11:30:00Z"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.working_hours_between",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_span_days | 36600 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
区間と営業時間帯を正確に指定します
`start_datetime`と`end_datetime`には、`Z`または数値のUTCオフセットを含む完全なISO日時を指定してください。`workday_start`と`workday_end`に24時間制の`HH:MM`を設定すると変更できます。
決定的なUTC計算の仕組み
実装は`Date`オブジェクトを作成せず、システム時計、ロケール設定、タイムゾーンサービスを参照しません。`working_seconds`は正確な整数です。`working_minutes`と`working_hours`はそこから算出し、安定したJSONのため最大6桁に丸めます。応答には適用時間帯と`timezone`の`UTC`も含まれます。
運用業務で結果を活用します
ブラウザーは単発確認に向き、APIは成功した1回の要求につき$0.002です。
技術的な質問
料金はいくらですか?
APIは成功した要求1回につき$0.002で、同じ純粋計算をブラウザーでも実行できます。
日時にUTCオフセットを使えますか?
はい。`Z`または`-04:00`のような明示的オフセットを使うと、各端点をUTCへ正規化します。