日時を分・秒のUTC間隔に切り下げ
タイムゾーンが明示されたISO日時を、繰り返し可能な分または秒の区間開始時刻へ切り下げます。まず指定されたZまたは数値オフセットをUTCへ変換し、Unixエポックから測った指定間隔の倍数へ切り下げます。使用するのは、ご入力いただいた日時、間隔、単位だけです。そのため、時計、ロケール、ネットワークサービス、端末のタイムゾーンを参照せずに、イベントの安定した集約、キャッシュキー、レポート期間、テストデータを作成できます。
無料で実行
明示的な時点と間隔をご指定ください
カレンダー日付、時、分、秒に加えて、Zまたは数値のUTCオフセットを含む完全なISO-8601日時をご指定ください。ローカル時刻だけでは一意の時点を表せないため、オフセットが必要です。たとえば、ニューヨークの09:30とロンドンの09:30は、時間軸上の異なる時点です。続いて正の整数間隔を入力し、単位として分または秒をお選びください。15分間隔なら予測可能なUTC境界に区間が作られ、20秒間隔なら密度の高いイベントストリームに適しています。分は1から1440、秒は1から86400まで指定でき、1回の要求は最大1日以内に制限されます。明示日時には秒の小数部も指定できますが、切り下げは整数秒の精度で行われるため、小数部は除かれます。応答には入力設定、正規化したUTC時点、切り下げ後のUTC日時、整数のUnixタイムスタンプが含まれます。後続処理では、用途に適した表現をご利用いただけます。
UTC切り下げ規則の仕組み
この処理は、指定日時を1970-01-01T00:00:00Zからの整数秒へ変換します。選択した間隔も秒へ変換し、数学的な床除算を適用してから、間隔の大きさを掛け戻します。最寄りの境界への四捨五入ではなく、必ず下側への切り下げです。したがって、14:37:52Zを15分間隔にすると14:30:00Zになり、14:45:00Zにはなりません。境界はUnixエポックを基準にするため、1時間を均等に分割しない間隔でも曖昧さがありません。たとえば7分間隔は、暗黙のローカル規則で毎時リセットされず、世界共通のUTC時間軸上で7分の倍数を連続してたどります。数学的な床関数は1970年より前でも重要で、ゼロ方向へ切り捨てず、より前の境界へ移動します。数値のタイムゾーンオフセットは区間選択前に解決されるため、同じ時点の等価な表記は同じ結果になります。実装はグレゴリオ暦と時刻欄を直接検証し、整数演算で暦変換を行います。Dateを呼び出さず、実行環境のタイムゾーンも継承しません。
自動化システムで安定した区間をご利用ください
切り下げた日時は、簡潔で説明しやすい区間キーになります。分析パイプラインでは、集計前に受信レコードを同一の時間枠へまとめられます。キャッシュでは、ミリ秒やクライアントのタイムゾーン設定によって等価なキーが分割されることなく、有効期限グループを作成できます。監視システムでは観測値を一定周期へ正規化でき、テストではシステム時計を固定せずに正確な境界を検証できます。人やログが読みやすいUTC値を必要とする場合はfloored_datetimeを保存し、数値比較やデータベース索引にはfloored_epoch_secondsをご利用ください。結果は3つの入力欄だけで決まるため、再試行しても同じオブジェクトになり、順不同のレコード処理でも過去の結果は変わりません。API料金は1件$0.002で、ブラウザー実行では同じ純粋な計算をローカルで行えます。この機能はタイムゾーンの推測、現在時刻の取得、暦月単位の区分、上方向への丸めを行いません。夏時間を伴う名前付きタイムゾーンが業務境界の基準である場合は、事前に規則を解決し、得られた明示的なISOオフセットをご指定ください。
活用例
イベントをレポート期間へ集約
異なるオフセットのISOタイムスタンプを、一貫したUTC区間開始時刻へ変換してから件数や合計を計算できます。
決定的なキャッシュキーを作成
間隔より小さい時刻差を除き、同じ時間枠の要求で1つの安定したキーを共有できます。
正確なテストデータを準備
端末の時計、ロケール、タイムゾーンデータベースを使わず、分または秒の境界を検証できます。
よくある質問
1回の要求料金はいくらですか?
API料金は1件$0.002です。ブラウザー実行では、同じ決定的な計算をローカルで行います。
日時にZまたはオフセットが必要なのはなぜですか?
タイムゾーンのない時刻は一意の時点を示しません。明示的なオフセットにより、UTC変換が決定的になります。
最も近い間隔へ丸められますか?
いいえ。Unixエポックより前の日時も含め、必ず以前の間隔境界へ切り下げます。
秒の小数部はどうなりますか?
入力できますが、この機能は整数秒の精度で処理するため、返されるUTC値に小数部は含まれません。
間隔境界の基準はどこですか?
Unixエポックである1970-01-01T00:00:00Zからの秒数について、間隔の正確な倍数を境界とします。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/floor-to-interval \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2026-07-25T14:37:52Z","interval":15,"unit":"minute"}'const res = await fetch("https://api.kit.forhosting.com/date/floor-to-interval", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2026-07-25T14:37:52Z",
"interval": 15,
"unit": "minute"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/floor-to-interval",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2026-07-25T14:37:52Z",
"interval": 15,
"unit": "minute"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/floor-to-interval", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2026-07-25T14:37:52Z","interval":15,"unit":"minute"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2026-07-25T14:37:52Z","interval":15,"unit":"minute"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/floor-to-interval", 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-25T14:37:52Z",
"interval": 15,
"unit": "minute"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.floor_to_interval",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |