0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ブラウザのタイムゾーンとIPアドレスのタイムゾーンが違うのはなぜ?無料ツールで一発確認

0
Posted at

Webアプリで「ユーザーの現在地」を扱うとき、タイムゾーンの取得方法は2つあります。ところが、この2つの答えが食い違うことがよくあります。なぜなのか、技術的な理由を整理しました。

ブラウザのタイムゾーンはOSから来る

JavaScript でタイムゾーンを取得する標準的な方法はこれです:

Intl.DateTimeFormat().resolvedOptions().timeZone
// 例: "Asia/Tokyo"

この値はブラウザが OS の設定から読み取ったもので、ネットワークとは無関係です。ユーザーが手動で変更すれば、その値が返ります。

IPアドレスのタイムゾーンはジオロケーションDBから来る

もう一つの方法は、IPアドレスから位置を推定するジオロケーション(GeoIP)データベースを使うことです。サーバー側で「このIPはどこの国のものか」を調べて、タイムゾーンを返します。

2つが食い違う典型的な原因

  • VPN / プロキシを使っている:IPの出口が海外にあるため、IP側のタイムゾーンが海外になる
  • 会社のネットワーク:企業の出口ゲートウェイが本社のある国にある
  • クラウドのVM:サーバーのリージョンと利用者の所在地が違う
  • ISPの登録情報のズレ:IPアドレスの登録住所と実際の利用地域が一致しないことがある
  • 手動でOSのタイムゾーンを変えている:ブラウザ側だけ変わる

つまり「ブラウザのタイムゾーン ≠ IPアドレスのタイムゾーン」はバグではなく、データの出所が違うために起きる正常な現象です。ログイン時の不正検知や、時刻表示のズレの原因調査では、この違いを意識する必要があります。

無料ツールを作りました

この2つの値を並べて一発で確認できる無料ツールを作りました:

▶︎▶︎▶︎ あなたのタイムゾーンは何? - タイムゾーン検出&時差計算 | 17NAS ◀︎◀︎◀︎

できること:

  • ブラウザのタイムゾーンとIPアドレス側のタイムゾーンを並べて表示
  • UTCオフセット、サマータイム(夏時間)の有無を表示
  • 任意の2地点の時差を計算(IANAタイムゾーンデータベース基準、サマータイム考慮)
  • 登録不要、ブラウザだけで動作

VPNを使っているときや、海外出張中の時刻確認などに使ってみてください。

(宣伝:このツールは私が作った無料ツールです)

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?