旅行日程の時間重複と予定の競合を確認
旅程時間の競合チェッカーは、予定された活動の一覧を調べ、同じ時間帯を占めるすべての組み合わせを特定します。各活動について、名前と開始・終了時刻を24時間制のHH:MM形式で入力してください。競合の有無と件数、重なった活動、共通する正確な時間帯が結果に表示されます。終了が開始より前の活動はエラーとなるため、不正な予定から誤解を招く結果が作られることもありません。
無料で実行
同じ日の予定を分かりやすく入力してください
各活動に判別しやすい名前を付け、開始と終了を24時間制のHH:MM形式で入力してください。すべての項目は同じ日の予定として扱われるため、観光、会議、日帰り旅行、移動日の確認に適しています。結果を見ただけで分かる名称をお使いください。「見学」より「博物館ガイドツアー」のほうが明確です。入力を時刻順に並べる必要はありません。すべての組み合わせを比較し、0から始まる元のインデックスを保持するため、外部システムでも該当レコードを確実に特定できます。開始と終了が同じ活動も有効ですが、継続時間がないため重複は発生しません。23:00から01:00までのような日をまたぐ活動は、終了が開始より前に見えるため対象外です。日付ごとに分けるか、日付を扱える予定管理で整理してから確認してください。
競合と判定される条件をご確認ください
2つの活動が正の長さを持つ時間帯を共有する場合に限り、競合と判定されます。博物館が11:00に終了し、昼食が11:00に始まる場合、境界で接するだけなので重複しません。昼食が10:59に始まれば、1分間の競合です。各結果には、両方の活動名とインデックス、共通区間の開始・終了、重複分数が含まれます。3つの活動が同時に重なる場合も、曖昧な1つのまとまりにはせず、3つすべての組み合わせを返します。そのため、人もプログラムも関係ごとに個別対応できます。結果は重大度順ではなく、入力に基づく一定の順序です。一方の活動が他方に完全に含まれる場合も競合となり、内側の活動の全時間が重複区間になります。同一の時間帯も全時間にわたって競合します。
無効な時刻を直して結果をご活用ください
比較の前に、すべての時刻を検証します。値は時を示す2桁、コロン、分を示す2桁で構成し、00:00から23:59の範囲にしてください。終了が開始より前なら入力エラーで停止します。予約ミスを隠すおそれがあるため、日またぎと推測したり自動修正したりはしません。有効な入力では、単純な分岐に `has_conflicts`、概要に `conflict_count`、元の項目と一緒に詳細を示す場合に `conflicts` をお使いいただけます。旅行計画サービスなら競合する各組み合わせから選択を促し、表計算なら該当インデックスを強調できます。修正後は一覧全体を再送してください。競合が0なら、正の長さを持つ重複は残っていません。計算は決定的で、ネットワークや現在時刻を使いません。ブラウザーでは無料で、APIリクエストの公開基本料金は $0.002 です。
活用例
観光日の予定を見直す
時間指定の入場券、ツアー、食事、移動が重ならないか、確定前にご確認いただけます。
会議日程を検証する
同じ参加者の時間を同時に必要とするセッション、面談、催しを見つけられます。
予定管理に競合確認を加える
安定したインデックスと完全な競合ペアにより、変更が必要な項目を示せます。
よくある質問
時刻はどの形式で入力しますか?
00:00から23:59までの24時間制HH:MM形式をお使いください。例は09:30や18:05です。
連続する活動も競合になりますか?
なりません。一方の終了と他方の開始が同じなら、境界で接するだけで競合は報告されません。
終了が開始より前の場合はどうなりますか?
位置を示す入力エラーになります。活動が夜間を通して続くとは推測しません。
複数の競合を報告できますか?
はい。3つ以上が同時に重なる場合の全組み合わせを含め、重複する各ペアを返します。
異なる日付の活動も確認できますか?
直接は確認できません。同じ日の時刻を比較しますので、日付別に分けて各日をご確認ください。
APIリクエストの料金はいくらですか?
APIリクエストには公開基本料金 $0.002 が適用されます。同じ決定的な確認をブラウザーでは無料で実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}'const res = await fetch("https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel2.itinerary_time_conflict_check",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |