私が今まで逃した最も高価な会議は正しくスケジュールされていましたロンドンの誰かが置きました " 午後3 時私の時間, 午前10 時yours" カレンダーでニューヨークで私に招待, 彼らは2 月にそれを書いたとき、それは本当でした 呼び出しは12 3 月でした. 米国は前の日曜日に時計を前に移動していました; 英国は持っていませんでした, そして、別の3 週間はそうしません. ロンドンとニューヨークの間のギャップ, 通常5 時間, その週は4 でした - だからロンドンの午後3 時は、私のために午前10 時ではなく、1 時間早く空の部屋に参加し、あきらめ、完全に電話を逃しました。
That three-week window in spring - and the one-week window in autumn - is not an edge case.それは毎年起こり、それ以外の場合は算術に完璧に能力のある人々を捕まえます、なぜなら算術は問題ではないからです 問題は、 " ロンドンはニューヨーク" の5 時間先にあるということです 2 つの都市についての事実ではありません それは2 つの都市についての事実です 特定の日に、日付を添付せずに書き留めた瞬間、バグが発生しました。
タイム ゾーンはオフセットではありません。 これは、瞬時に送金したときにオフセットを生成する一連のルールです。 これらのルールの変更: 各国は、夏時間のサマータイムを採用し、それを放棄し、標準のオフセットを変更するか、3 週間の通知で恒久的な変更を発表します。 これが理由です タイムゾーンコンバーター で Toolz.dev オフセットはどこにも保存しないでください。 と尋ねます イアナ タイムゾーンデータベース - ブラウザ内にすでに存在するもの - 変換する正確な瞬間のオフセットは何か、そしてそれは1つおきに再び尋ねます。
tl;dr: サマータイムの遷移が国間で一致しないため、2 つのゾーン間のギャップは日付によって異なります。 ザ・ タイムゾーンコンバーター 入力した特定の瞬間に IANA データベースを介したすべてのオフセットを解決し、UTC オフセットと署名された差分を表示し、30 分と 15 分のゾーンを処理し、ミーティング プランナー ストリップ内のいくつかの都市に同じ瞬間を配置します。 完全にブラウザで実行されます。
主な機能
オフセットは、一瞬にして解決され、ハードコーディングされていない
このツールのすべてのオフセットは、インスタントをターゲットゾーンにフォーマットし、壁掛け時計を読み戻すことによって計算されます。その単一の設計決定は、夏時間、歴史的なルールの変更、および政令によってオフセットを調整する国がすべて同じコードパスで処理されることを意味します。維持するためのオフセットテーブルも古くなるテーブルもありません。ベルリンとシカゴの間で 1 月に会議を変換し、7 月に同じ会議を変換すると、ツールは両方の時間に 7 時間のギャップを正しく与えますが、3 月下旬に 1 つ変換すると、正しく 6 つになります。
50 以上の厳選された IANA ゾーン
ピッカーは、人々が実際にスケジュールを立て、地域別にグループ化し、国とラベルを付け、完全な IANA 識別子と一緒に表示します。 最後の部分は見た目よりも重要です。 Asia/Kolkata cron 式に貼り付ける文字列ですか、postgres AT TIME ZONE 句、または Python ZoneInfo コンストラクター。 「コルカタ、インド」を読み、コピーする Asia/Kolkata は 2 つの異なるジョブであり、ツールは両方を実行します。
ミーティング プランナー ストリップ
変換の下では、追加する各ゾーンで、インスタントの周りのウィンドウにまたがる時間セルの行が表示されます。 勤務時間 (09:00 から 17:59 ローカル) は日陰で、早朝と遅い時間は別々にマークされ、別の暦日に該当するセルには、 +1d や -1d バッジ。サンフランシスコ、ロンドン、シドニーで同時に文明化された 1 時間を見つけるのは難しい問題です。このストリップでは、算術ではなく視覚的な時間になります。
通常のように扱われる 30 分と 15 分のゾーン
インドは UTC+05:30 です。 ネパールは UTC+05:45 です。 アデレードは冬は UTC+09:30、夏は UTC+10:30 です。 チャタム諸島は UTC+12:45 です。 世界の人口の約 5 分の 1 は、完全な時間数ではないオフセットで生活しており、何億人もの人々にとっては間違っていると仮定するツールはすべて間違っています。 ここでのオフセットは数分で保存され、表示されます。
入力した日付の略語
変換の各側には、その時点で有効なゾーンの略語が表示されます - EST または EDT、GMT または BST、AEST または AEDT これは、トランジションのどちら側に着地したかを確認する最も早い方法です。 3 月の日付を入力し、ツールに EDT と表示されている場合、時計はすでに変更されています。 EST と表示されている場合、それらは表示されていません。
完全にクライアント側
すべての計算は、ブラウザーで JavaScript で実行されます。 Intl API とエンジンに同梱されるタイム ゾーン データベース。 入力したものは何もアップロードされず、何もログに記録されず、ページがロードされると、コンバーターはネットワーク接続をまったく使用せずに動作し続けます。 これは、フィールドを変更した瞬間に結果が更新されることも意味します。待機する往復がないためです。
タイムゾーンコンバーターの使い方
ステップ 1: ソース ゾーン、日付、時刻を設定します
変換する都市を選択してください からをクリックして、時計が読み取った日付と時刻を正確に入力します。 時間フィールドは 24 時間値を取るため、午後 3 時は 15:00。 架空の瞬間ではなく、現在の瞬間が必要な場合は、押してください 今- ソースゾーンで見られるように現在の日付と時刻がロードされますが、これは必ずしも自分の壁にある日付と同じではありません。
ステップ 2: ターゲット ゾーンを選択する
答えが必要な都市を選択してください。 変換された日付、時刻、および 12 時間の読み取り値が、その特定の日付に適用される UTC オフセットおよび略語とともに、すぐに表示されます。 注意してください 日付 変更可能: ニューヨークの月曜日の 21:00 は、火曜日のダッカで 07:00 で、ツールは新しい日付を表示します。
ステップ 3: オフセットとギャップを読み取る
両側の下にオフセットがあります UTC±HH:MM フォームとゾーンの略語 それらの間で、ツールは単語で関係を述べています - " ダッカは10 時間先です ニューヨーク" - その日付の正しい値で、記憶された平均ではなく、方向を反転するためにスワップボタンを使用します; それは同じままです インスタント そして、どちらの側に入るかをひっくり返します。これは、ほとんどの場合、あなたが望んでいることです。
ステップ 4: ミーティング ストリップを構築する
すべての参加者のゾーンをプランナーに追加します。 各行は、そのゾーン内の同じ瞬間に、その周囲の時間を示し、作業時間は影付きで表示されます。 ソースの時間を早期または後でスライドして、シェーディングの動きを観察してください。 網掛けがすべての行に並んでいるとき、あなたは自分のスロットを見つけました。
ステップ 5: 結果をコピーする
変換された時間だけをコピーするか、式全体をコピーします - Sun, Mar 12, 2026 09:00 EDT (America/New_York) = Sun, Mar 12, 2026 13:00 GMT (Europe/London)ー そしてカレンダーの招待状に貼り付けます 両面を略語で書くことは 私のロンドンでの間違いを繰り返さないための 唯一の最も効果的な習慣です。
タイムゾーン変換の実際の仕組み
単純なメンタル モデルは、各ゾーンに番号が付加され、変換が減算されているというものです。 そのモデルは、ほとんどの場合、正しい答えを生成する方法で間違っています。これは、考えられる最悪の故障モードです。
正しいモデルには 3 つのレイヤーがあります。
レイヤー 1: インスタント。 すべての下には、普遍的なタイムライン上の 1 つの点、つまり 1970-01-01T00:00:00Z 以来の画期的なタイムスタンプ、秒数が刻まれています。インスタントは明確です。地球上の誰もが、時計が何を言おうと、同じ瞬間を同時に経験します。
レイヤー 2: オフセット。 オフセットは、ローカルの壁時計時間を取得するために、UTC に追加する署名付き分数です。 UTC-04:00 オフセットです。 それは 結果、場所の所有物ではありません。
レイヤー 3: ゾーン。 ゾーンは名前付きルールのセットです - America/New_York- これは、瞬間をオフセットにマッピングします。これは、人々がレイヤー 2 に崩壊するレイヤーであり、その崩壊は、これまでに書かれたほぼすべてのタイムゾーン バグの原因となります。
だから変換はそうではありません localB = localA + delta。 それは次のとおりです。
instant = resolve(wallClockA, zoneA) // rules of A, applied to that reading
wallClockB = render(instant, zoneB) // rules of B, applied to that instant
2 つのルール ルックアップ、1 つが途中で。 ツールはまさにこれを行います。 ゾーンのオフセットを一瞬で解決するために、そのゾーンにインスタントをフォーマットし、年、月、日、時、分、秒を読み返し、それらのフィールドを UTC であるかのように扱い、実際のインスタントを減算します。 違いは、エンジンの IANA データベースから直接オフセットが分であることです。
反対方向に行く - ウォールクロック読み取りからインスタントへ - チキンと卵の問題があります、なぜなら、あなたはインスタントを見つけるためにオフセットを必要とし、オフセットを見つけるためにインスタントが必要なので、ツールはナイーブオフセットを使用して一度推測し、推測が遷移の反対側に着陸したかどうかを確認し、それが行った場合、修正します。 2 つの検索、常に終了、DST 境界を越えて修正します。
IANA タイムゾーンデータベース
すべて依存するデータベースは IANA によって維持され、1980 年代に開始された Arthur David Olson にちなんで「オルソン データベース」と呼ばれることがよくあります。 すべてのオペレーティング システム、すべてのブラウザ、すべての JVM、およびすべての Python インストールに出荷され、政府が考えを変え続けているため、年に数回更新されます。
その識別子は次のようになります Area/Location: America/New_York、 Europe/London、 Asia/Kolkata、 Australia/Sydney.その場所は、政治的主張ではなく、代表的な都市である - America/New_York 米国東部地域全体をカバーしており、インディアナ州は、何十年もの間、夏時間の節約を観察するかどうかについて意見が一致していないため、独自の識別子が 12 個必要とされています。
データベースが格納するものは、ゾーンごとに 1 つのオフセットではなく、完全なルール履歴です。 ウクライナであることは知っています Europe/Kyiv でした Europe/Kiev 2022 年にスペルが更新されるまで。 エジプトが 2014 年に放棄した後、2023 年にエジプトが夏時間の再導入を導入したことを知っています。 サモアが 2011 年 12 月 30 日、国際的な日付変更線に飛び込んだときに完全にスキップしたことを知っています。 2015 年の日付と 2025 年の日付を同じ都市のペアに変換すると、正当に異なる答えが生成され、オフセットをハードコードするツールが過去にあるツールである理由が歴史のためです。
ソフトウェアを作成する人にとっては、実際の結果です。 UTC にインスタントを保存し、ユーザーのゾーンを IANA 識別子として保存し、表示レイヤーのみに変換します。 オフセットは絶対に保管しないでください。 オフセットはルールのレンダリングであり、ルールが変更されます。 エポック値を直接操作している場合、 タイムスタンプ コンバーター 日付として読み返すためのコンパニオン ツールです。
UTC オフセット、略語、ゾーン名: 使用するもの
これら 3 つのことは常に混乱しており、交換可能ではありません。
| フォーム | 例 | 安定? | ユニーク? | それを使う |
|---|---|---|---|---|
| IANA ゾーン名 | America/New_York |
はい、DST 全体で | はいって | ストレージ、コード、構成、API |
| UTC オフセット | UTC-04:00 |
いいえ、DST による変更 | いやー | ディスプレイ、インスタント接続によるワイヤーフォーマット |
| 略語 | EDT |
いいえ、DST による変更 | いやー | 人間向きのディスプレイのみ |
キラーは最後の列です。 略語は一意ではありません。 CST 米国中央標準時、中国標準時、キューバ標準時を意味します。3 つの異なるオフセット、1 つの文字列です。 IST インドの標準時、アイルランドの標準時、イスラエルの標準時を意味します。 BST 英国の夏の時間と、ブーゲンビルの標準時を意味します。 システムが受け取った場合 CST 有線で推測しなければならない、それは誰かにとって間違っていると推測するでしょう。
オフセット形式は明白ではありますが、安定していません。 UTC+01:00 は、インスタントのレンダリングを正しく識別しますが、ゾーンではありません。それを使用して計算することはできません。 つぎに 火曜日のレンダリング。次の火曜日が移行の反対側に収まる可能性があるためです。
IANA の名前だけがルールを守ります。 これは、3 つのうちの 1 つだけであり続けます。
なぜ 2 つの都市のギャップが動き続けるのか
サマータイムが理由であり、国が移行を同期させないため、非常に苦痛な理由があります。
- アメリカ 3 月の第 2 日曜日に前進し、11 月の第 1 日曜日に後退します。
- 欧州連合 3 月の最終日曜日に前方に飛び出し、10 月の最後の日曜日に後退します。
- オーストラリア、南半球にあることは、反対のことをします:10 月に進む、4 月に戻る - とクイーンズランド州、西オーストラリア州、およびノーザンテリトリーはまったく行いません。
- インド、中国、日本、アフリカの大部分、そしてほとんどのアジア いかなる時点でも観察しないでください。
それらを並べると、通常のギャップが間違っている重複ウィンドウが表示されます。
| 期間 | ニューヨーク時計 | ロンドン時計 | ギャップ |
|---|---|---|---|
| ほとんどの冬 | EST (UTC−05:00) | GMT (UTC+00:00) | 5時間 |
| 3 月の第 2 日曜日 → 3 月の最終日曜日 | EDT (UTC−04:00) | GMT (UTC+00:00) | 4時間 |
| ほとんどの夏 | EDT (UTC−04:00) | BST (UTC+01:00) | 5時間 |
| 10 月最後の日曜日 → 11 月の第 1 日曜日 | EDT (UTC−04:00) | GMT (UTC+00:00) | 4時間 |
年に 2 つのウィンドウ - 春に約 3 週間、秋に 1 週間 - すべての "we're は常に 5 時間の間隔をあけて " カレンダーの仮定が 1 時間ずれている。そして、それは都市の 1 組にすぎません。シドニーを追加します。その移行は反対方向に実行され、年間を通じて異なるギャップ値の数は急速に増加します。
トランジション自体が、名前を付ける価値のあるさらに 2 つのハザードを生み出します。 時計が前に出るとき、現地時間の 1 時間 存在しないー ニューヨークのトランジションの夜02:30 は本当の読書ではない 時計が戻ると、現地時間の1 時間 二度起こる、そして、壁時計の素朴な読み方は、本当にあいまいです。 コンバータは、存在しない時間を、最初の発生までの移行直後の瞬間に解決し、最初の発生までのあいまいな時間は、最も多くのカレンダー ソフトウェアが従う規則です。 防御可能な選択肢はこれだけではありませんが、最も少ない驚きを生み出すのは、これだけではありません。
よくある使用例
分散チーム全体での会議のスケジュール。 明らかなもの、そしてプランナー ストリップが存在するもの。 3 つ以上のゾーンは、特に 1 つが 30 分のオフセットまたは南半球にある場合に、心理演算が確実に失敗する場所です。
カレンダーの招待状やお知らせを書く。 常にゾーンで時間を指定し、常に少なくとも 2 つのレンダリングを行い、「私の時間」よりも IANA 名または完全修飾の略語を優先してください。 「14:00 UTC (10:00 EDT / 19:30 IST)」は明確です。 「午後 2 時」はコイン フリップです。
ログでタイムスタンプをデバッグします。 サーバーが UTC にログインし、顧客が現地時間にインシデントを報告し、要求を見つける前に 2 つを調整する必要があります。 顧客のレポートを UTC に変換してから、検索します。 ログが ISO 文字列ではなくエポック値である場合は、ログを実行します。 タイムスタンプ コンバーター まず。
cron ジョブとバックグラウンド作業のスケジュールを設定します。 UTC に設定されたサーバー上の cron 式は、ユーザー& #39; 夏時間の変更ではシフトしません。これは通常、希望するものです。また、ジョブが DST 観測国の顧客のために 09:00 ローカルで実行されることを意図している場合、場合によっては正確に希望しません。スケジュールをコミットする前に両方の読み取り値を計算します。; ザ クロンパーサー あなたの表現の実際の意味を教えてくれます。
旅行や家族との電話の計画。 各空港の現地時間に出発時刻と到着時刻が常に指定されます。つまり、両端を同じゾーンに変換するまで、フライトの見かけの時間はナンセンスです。 「出発前に到着する」14 時間のフライトは、日付通りの交差点です。
打ち上げ、展開、禁輸を調整します。 複数の市場でハード カットオフが適用されるものは、1 回の瞬間に必要になります。UTC で表現され、各地域のローカル レンダリングが添付されています。 時計の読み取り値ではなく、その瞬間まであと何日も計算している場合、 日付差分計算 ワークフローの残りの半分です。
フェイク
EST に変換するにはどうすればよいですか?
選択する America/New_York ソースとして、 Asia/Kolkata ターゲットとして。 インドは、東部標準時間ではニューヨークより 10 時間 30 分進んでおり、東部の昼間は 9 時間 30 分先です。これは、インドは夏時間を観察しておらず、米国もそうです。 ギャップの変化が、単一の数字を覚えるのではなく、日付に対して変換する必要がある理由です。
EST と EDT はどう違いますか?
EST (東部標準時間) は UTC-05:00 で、冬季に適用されます。 EDT (東部夏時間) は UTC-04:00 で、3 月の第 2 日曜日から 11 月の第 1 日曜日まで適用されます。「東部時間」または ET は、現在有効ないずれかを意味する包括的な用語を意味します。 ドキュメントとコードで、IANA 識別子を優先します America/New_York、これは一年中明白です。
このコンバーターは夏時間に対応していますか?
はい、そしてそれはあなたが今日ではなく、あなたが入力した日付のためにそうします。 すべてのゾーン' sオフセットは、変換する特定の瞬間にIANAタイムゾーンデータベースを通じて解決されるため、3月1日の会議と3月15日の同じ会議ニューヨークとロンドンの間でそれぞれ5時間のギャップと4時間のギャップが正しく表示されます - 米国はヨーロッパよりも3週間前に時計を前進させます。
IANA タイムゾーン識別子とは何ですか?
みたいな名前です America/New_York、 Europe/London、または Asia/Kolkata 現在のオフセットだけでなく、すべての履歴ルール変更を記録する参照データセットである IANA タイム ゾーン データベースから抽出されました。識別子はエリア/場所のペアであり、CST などの略語は曖昧であるため、ソフトウェアでゾーンに名前を付ける唯一の安全な方法です。米国中部、中国標準、キューバ標準はすべてそれを主張しています。
一部のタイム ゾーンに 30 分または 45 分のオフセットがあるのはなぜですか?
ゾーンは政治的で、幾何学的なものではないからです。 インドは UTC+05:30 に決着をつけ、1 クロックで広い国を運営しました。 ネパールは、インドより 15 分早く UTC+05:45 に座ることを選択しました。 アデレードは UTC+09:30、チャタム諸島は UTC+12:45 です。 オフセットが完全であると仮定するコードは、世界の人口の約 5 分の 1 にとって最終的には間違っています。
UTC とは何ですか? また、GMT とはどのように違うのですか?
UTC (Coordinated Universal Time) は、すべてのゾーンがオフセットとして定義される原子時計の標準です。 GMT (グリニッジ標準時) は、冬にたまたま UTC+00:00 に等しいタイムゾーンです - 英国は夏に BST (UTC+01:00) に移動するため、" GMT" および " ロンドン時間" は一年中同じではありません。 UTC でインスタントを保存して比較する; 表示のみを目的としてゾーンに変換します。
世界にはいくつのタイムゾーンがありますか?
理論上は 24 の 1 時間帯がありますが、38 の異なる UTC オフセットが実際に 1 回使用され、1/2 時間のゾーンがカウントされ、UTC-12:00 から UTC+14:00 に及ぶ。 26 時間のスプレッドが、地球上の 2 つの場所が同じ瞬間に異なるカレンダーの日付に表示される理由です。 IANA データベース自体は、過去のルールと現在のルールを追跡するため、数百の名前付きゾーンを定義します。
サマータイムのギャップに陥った時間はどうなりますか?
時計が前にバネるとき、現地時間の1 時間は決して存在しないので、ニューヨークの遷移の夜の02:30 は実際の読み取りではありません コンバータは、間違った答えを黙って返すのではなく、遷移直後の瞬間にそのような入力を解決します 秋のオーバーラップ中の時間は、同じ壁掛け時計が2 回起こる場所で、最初の発生に解決します - ほとんどのカレンダーソフトウェアが従う規則です。



