ISO日時区間の経過時間をパーセント計算
開始、終了、確認したい時点を入力すると、区間のどれだけが経過したかが分かります。08:00から20:00 UTCまでの区間で14:00なら50%です。現在時刻には左右されません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 開始
- 2026-07-25T08:00:00Z
- End
- 2026-07-25T20:00:00Z
- 基準
- 2026-07-25T14:00:00Z
- 進捗率 (%)
- 50
- 経過(ms)
- 21,600,000
- 期間(ms)
- 43,200,000
- 基準との関係
- within
この経過時間パーセント計算では、現在の時計を参照せず、明示された区間内の進捗を求めます。開始日時、終了日時、評価する基準時点をご指定ください。各値にはZまたは数値のUTCオフセットが必要です。そのため、同じ瞬間を表す入力であれば、実行するコンピューターやブラウザーにかかわらず同じ結果になります。出力には、丸めて範囲内に収めた割合、符号付き経過ミリ秒、総時間、制限適用の有無、区間に対する基準時点の位置が含まれます。
完全な区間と基準時点をご指定ください
進捗を正しく求めるには、両端と観測時点が明確でなければなりません。オフセットを正規化した後、endはstartより後の瞬間である必要があります。referenceは区間内だけでなく、開始前や終了後にも設定できます。
端末の時計で値を補わないため、過去の確認、予定されたマイルストーン、カウントダウン、保守時間帯、再現可能なテストに利用できます。2026-07-25T14:00:00Zのような値は明示的ですが、オフセットのないローカル日時は受け付けません。異なる表記でも同じ瞬間を示せます。
たとえば2026-07-25T16:00:00+02:00と2026-07-25T14:00:00Zは、この計算では等価です。変換前には月の日数やグレゴリオ暦のうるう年規則も検証するため、存在しない日付が黙って別の日へ繰り越されることはありません。
UTCでの計算と範囲制限をご確認ください
最初に、すべての日時を共通のUTCミリ秒尺度へ変換します。未調整の割合は、経過時間を総時間で割って百を掛けた値です。初期設定では、返す割合をゼロから百までに収めます。
referenceが開始前ならゼロ、終了後なら百です。別の有界尺度が必要な場合は、最大値が最小値以上になるように、任意の最小割合と最大割合を指定できます。境界と完全に一致する瞬間は区間内として扱われ、対応する端点の割合になります。
活用例
リリース期間を測定する
明示的に記録した確認時点で、デプロイや保守期間の安定した進捗率を計算します。
ダッシュボードの値を再現する
区間と基準時点を保存し、以前に表示された割合を正確に再生成します。
境界での動作を検証する
開始前、区間内、終了後の状態を、設定可能な制限と決定的な期待出力で確認します。
よくある質問
現在時刻を使用しますか?
いいえ。 referenceを明示的に指定する必要があり、計算中に時計を参照することはありません。
タイムゾーンのオフセットに対応していますか?
はい。 Zまたは+02:00、-05:30のような数値オフセットをご使用ください。すべてUTCへ正規化されます。
開始と終了を同じ日時にできますか?
いいえ。 長さがゼロの区間では経過割合を定義できないため、endはstartより後でなければなりません。
確認する時点が開始前や終了後のときはどうなりますか?
初期設定では、開始前は0、終了後は100で止まります。経過時間は符号付きのままなので、区間からどれだけ外れているかは引き続き分かります。
パーセントは小数点以下何桁で表示されますか?
初期設定は6桁です。0桁から12桁まで選べます。丸めは、パーセントを上限と下限の範囲に収めたあとで行います。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/time-progress-percent \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2026-07-25T08:00:00Z","end":"2026-07-25T20:00:00Z","reference":"2026-07-25T14:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/time-progress-percent", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2026-07-25T08:00:00Z",
"end": "2026-07-25T20:00:00Z",
"reference": "2026-07-25T14:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/time-progress-percent",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2026-07-25T08:00:00Z",
"end": "2026-07-25T20:00:00Z",
"reference": "2026-07-25T14:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/time-progress-percent", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2026-07-25T08:00:00Z","end":"2026-07-25T20:00:00Z","reference":"2026-07-25T14:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2026-07-25T08:00:00Z","end":"2026-07-25T20:00:00Z","reference":"2026-07-25T14:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/time-progress-percent", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"start": "2026-07-25T08:00:00Z",
"end": "2026-07-25T20:00:00Z",
"reference": "2026-07-25T14:00:00Z"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.time_progress_percent",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
完全な区間と基準時点をご指定ください
start、end、referenceには、秒まで含む完全なISO 8601日時を指定し、Zまたは数値のUTCオフセットを明記してください。
UTCでの計算と範囲制限をご確認ください
endからstartを差し引いて区間全体の長さを求め、referenceからstartを差し引いて符号付きの経過時間を求めます。制限の影響を受けるのはprogress_percentだけです。elapsed_msは符号を保持するため、referenceが区間の前後へどれだけ離れているかを確認できます。clampedは未調整値が変更されたかを示し、reference_relationはbefore、within、afterのいずれかを返します。
精度を選び、決定的な結果をご利用ください
初期値は六です。 丸めは未調整の割合を指定範囲へ収めた後に行うため、設定した端点が優先されます。後から再現する必要がある場合は、正確なreferenceを結果と一緒に保存してください。リアルタイム表示では、アプリケーション側で基準時点を明示的に生成して送信してください。この機能は時計を隠れて読むのではなく、意図的に純粋な計算として動作します。precisionではprogress_percentの小数点以下の桁数をゼロから十二まで選べます。duration_msとelapsed_msは整数のミリ秒差のままなので、割合を検算したり、時間を別表示したりできます。この実装はネットワークへ接続せず、乱数を使わず、Dateを呼び出さず、実行環境のタイムゾーンも参照しません。グレゴリオ暦の変換を算術で行うため、同じ有効なリクエストはサーバーのWorkerでも利用者のブラウザーでも同じJSONを返します。
技術的な質問
APIの利用料金はいくらですか?
リクエストごとに$0.002です。同じ純粋な計算をブラウザー内でも実行できます。
基準時点が区間外の場合はどうなりますか?
割合は設定範囲内に収まりますが、符号付きelapsed_msとreference_relationには実際の位置が保持されます。