日時から分を引くUTC計算ツール
この計算ツールは、明示されたISO 8601日時を指定した分数だけ前に戻し、UTCに正規化した1つの値を返します。末尾のZまたは数値のUTCオフセットに対応するため、端末のローカルタイムゾーンではなく、特定の瞬間を基準に計算します。秒、ミリ秒、小数の分数、日・月・年・うるう年の境界も一貫して処理します。現在時刻は参照しないため、いつどこで実行しても同じ入力から同じ結果が得られます。
無料で実行
タイムゾーンを含む日時をご入力ください
2026-07-25T12:30:00Zのように実在する瞬間を示すISO 8601日時、または+05:30のようなオフセットで終わる値をご入力ください。タイムゾーンの指定は必須です。指定がなければ、ロンドンの正午と東京の正午のように、同じ時計表示でも異なる瞬間を意味するためです。各月の日数とうるう年の規則を含め、日付全体を検証します。時、分、秒、ミリ秒、数値オフセットも確認します。秒が0の場合は省略できますが、結果は常に完全なUTC表記で返されます。分数欄には差し引く量をご指定ください。整数は一般的な予定計算に適し、1.5のような小数は90秒を表します。負の値も使用でき、その場合は日時が実質的に先へ進みます。両方の項目が必須で、分数には有限の数値を指定する必要があります。
UTC計算と出力形式について
最初に入力のオフセットを適用し、指定された日時をUTC上の瞬間へ変換します。その後、正確な時間量を差し引き、グレゴリオ暦の日付を再構成します。元のオフセットが0でない場合、この順序が重要です。たとえば、正のオフセットで深夜を少し過ぎた日時は、分を引く前からUTCでは前日に属する場合があります。結果の末尾にはUTCを示すZが付き、秒と3桁のミリ秒が必ず含まれます。表記を正規化することで、同じオフセットの別表記を保持せずに、比較、保存、並べ替え、別のAPIへの受け渡しが容易になります。時、日、月、うるう日、年の境界は自動的に処理されます。明示されたオフセットが瞬間を定めるため、夏時間の規則や地域名付きタイムゾーンは推測しません。現在の時計や実行環境のタイムゾーンも使用せず、保存した要求を常に再現できます。
アプリケーションで安全にご利用いただく方法
既存のタイムスタンプから、より早い締切、通知時刻、受付期限、時間枠の開始点、ログ上の位置などを求める場合にご利用ください。元の日時と差し引く時間量を送信し、返されたdatetime項目を正規化済みの結果としてお使いいただけます。経過分数と暦上の操作は区別が必要です。1,440分を引くと必ず24時間前になりますが、夏時間の切り替えをまたいで前日の同じ現地時刻になるとは限りません。その動作が必要な場合は、事前に地域名付きタイムゾーンと規則を解決してください。2月30日や25時などの不可能な値は自動修正せず、入力エラーとして返します。非常に大きな移動量や1ミリ秒未満の精度も拒否し、見かけだけ正確な結果を防ぎます。個別計算にはブラウザー版が便利です。自動呼び出しは1回$0.002で、予定管理、データ整備、時刻正規化の処理に組み込めます。
活用例
通知時刻を計算する
予定のタイムスタンプを一定時間だけ前へ戻し、通知に使うUTCの瞬間を保存できます。
処理の受付期限を定める
締切から分数を引き、自動処理が新しい作業の受付を停止すべき時刻を求められます。
時刻データを正規化する
オフセット付き日時をUTCへ変換しながら、データ準備時に再現可能な時間調整を適用できます。
よくある質問
計算に現在時刻は使われますか?
いいえ。指定された日時と分数だけを使用するため、同じ入力からは常に同じ結果が得られます。
どのタイムゾーン形式に対応していますか?
UTCにはZを、数値オフセットには+05:30や-04:00の形式をご使用ください。タイムゾーンのない日時は曖昧なため受け付けません。
小数の分数も引けますか?
はい。整数ミリ秒へ正確に換算できる小数に対応しています。たとえば1.5分は90秒として差し引かれます。
結果はどの形式で返されますか?
UTCに正規化したISO日時で返します。末尾はZとなり、秒と3桁のミリ秒を含みます。
APIの利用料金はいくらですか?
APIは1回$0.002です。同じ決定論的な計算をブラウザーでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/subtract-minutes \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2026-07-25T12:30:00Z","minutes":45}'const res = await fetch("https://api.kit.forhosting.com/date/subtract-minutes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2026-07-25T12:30:00Z",
"minutes": 45
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/subtract-minutes",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2026-07-25T12:30:00Z",
"minutes": 45
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/subtract-minutes", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2026-07-25T12:30:00Z","minutes":45}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2026-07-25T12:30:00Z","minutes":45}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/subtract-minutes", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"datetime": "2026-07-25T12:30:00Z",
"minutes": 45
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.subtract_minutes",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |