2つのHMS時間を引き算
時間・分・秒で表した2つの経過時間を、手作業で秒へ変換せずに減算できます。非負の時間をHH:MM:SS形式で2つ入力すると、1つ目から2つ目を引き、必要に応じて秒や分の繰り下がりを行い、正確な符号付き結果を返します。時間は24時間制に限定されないため、プロジェクト、メディア再生時間、トレーニング、機械サイクルなどの長い期間にも利用できます。計算には入力された2つの値だけを使用します。
無料で実行
時刻ではなく経過時間を入力してください
1つ目には差し引かれる側の時間を、2つ目には差し引く時間を入力してください。各入力はHH:MM:SS形式で、分と秒は必ず2桁にします。時間は1桁から6桁まで使用できるため、125:30:00も有効です。125時という時計表示ではなく、125時間の経過時間として扱います。分と秒は正規化済みの入力として00から59の範囲にしてください。単位が空の場合は、7時間9秒を7:00:09とするように00を使用します。入力値自体に負号は付けません。負号は元の時間ではなく、計算後の差にだけ付きます。この規則により、2つの負の区間を含む曖昧な式を避けられます。演算順序は常に「1つ目の時間-2つ目の時間」です。両方が等しい場合は00:00:00となり、符号は0です。前後の空白は無視しますが、単語、小数秒、日付の一部、AMやPMは受け付けません。したがって、受理した値の意味は常に一意です。
繰り下がりと負の結果をご確認ください
HMSの減算では、筆算と同じ繰り下がりを行います。利用できる秒が引く秒より少ない場合は、1分を60秒に換えて秒へ加えます。秒の列を計算した後、利用できる分が引く分より少なければ、1時間を60分に換えて分へ加えます。応答には各繰り下がりが発生したかどうかも含まれるため、学習用の説明、監査、計算過程の表示に役立ちます。2つ目の時間が1つ目より長い場合は、全体の長さを比較し、同じ規則で大きい絶対値から小さい絶対値を引いた後、正規化した差の先頭にマイナス記号を付けます。負の分や75秒のような不自然な構成にはなりません。たとえば負の差は-02:04:09と表示されます。数値のsignフィールドは-1、0、1のいずれかです。total_secondsには符号付きの差が保持されるため、表示だけでなく後続の演算にもそのまま利用できます。
正規化された出力を確実に利用できます
結果には、正規化済みのHMS文字列、符号付き合計秒数、符号、および非負の時間・分・秒の各要素が含まれます。この組み合わせにより、人向けの表示と後続処理の両方に対応でき、説明文を解析する必要がありません。値は時刻ではなく経過時間なので、24時間で折り返しません。49:10:00は49時間10分の経過を意味します。計算では範囲を制限した整数演算のみを使用します。現在の日付、タイムゾーン、夏時間、地域設定、ネットワークサービス、言語モデルはいずれも参照しません。そのため、同じ入力からは常に同じ出力が得られます。ビルドスクリプト、勤務時間の照合、テストデータ、メディア処理、再現可能なレポートに適しています。方向を判断する際はsignをご確認ください。各時間要素は常に非負の大きさです。ブラウザーでの利用は無料で、自動化したAPIリクエストは1回$0.002です。
活用例
メディア再生時間の比較
編集後の再生時間を元の時間から引き、追加または削除された長さを符号付きで正確に確認できます。
記録した作業時間の照合
どちらかが24時間を超える場合でも、2つの累積作業時間の差を求められます。
イベント所要時間の確認
予定時間と実測時間を比較し、秒および繰り下がりの詳細を保持できます。
よくある質問
APIリクエストの料金はいくらですか?
APIリクエストは1回$0.002です。ブラウザーの計算機は無料で利用できます。
結果が負になることはありますか?
はい。2つ目の時間が長い場合、正規化された結果の先頭にマイナス記号が付き、signは-1になります。
時間は23を超えてもよいですか?
はい。時計の時刻ではなく経過時間なので、0から999999まで指定できます。
分と秒を60未満にする必要があるのはなぜですか?
入力には正規化済みのHMS表記が必要です。減算時に繰り下がりを行い、出力も正規化された状態を保ちます。
日付や夏時間も考慮しますか?
いいえ。抽象的な2つの時間だけを減算し、日付、タイムゾーン、夏時間の切り替え、現在時刻は使用しません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/hms-subtract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first_duration":"12:05:10","second_duration":"03:47:55"}'const res = await fetch("https://api.kit.forhosting.com/date/hms-subtract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first_duration": "12:05:10",
"second_duration": "03:47:55"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/hms-subtract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first_duration": "12:05:10",
"second_duration": "03:47:55"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/hms-subtract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first_duration":"12:05:10","second_duration":"03:47:55"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first_duration":"12:05:10","second_duration":"03:47:55"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/hms-subtract", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"first_duration": "12:05:10",
"second_duration": "03:47:55"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.hms_subtract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_hours | 999999 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |