コンピュータに保存するデータにはタイムスタンプ(更新日時)を付けるのが定石だ。 Windows や Mac OS のデータファイルにタイムスタンプがあるのはもちろんだが、 データベースに格納されている1つ1つの情報にもタイムスタンプが付与されることが多い。 このように、タイムスタンプを使う場面は非常に多いのだが、 意外と正確なデータ形式で登録されていないプログラムが多い。なぜか。
どの時間を使うか
パソコンから日時を取得するのは簡単だ。 しかし、ネットワーク上で利用するデータとなると、 どのパソコンから取得した日時を使っているのかが問題になる。
すでに述べたように、
パソコンの内蔵時計は簡単に狂う。
ここで、ブログに記事を書きこむことを考えてみよう。
2006年4月24日13時20分30秒に本文が登録され、その直後にコメントが書きこまれたとしよう。
コメントを書きこんだPCの時計が遅れており、コメントのタイムスタンプが
2006年4月24日13時20分20秒になってしまったとする。
第三者がこのブログを見たらどう思うだろうか。
本文よりコメントの方が早く書かれているということになる。
このブログの信頼性はかなり低いと解釈されても仕方ないだろう。
このような問題を避けるため、タイムスタンプの基準となる時計は1つに限定する。 一般的には、サーバの時計を利用する。
時差の問題
次に問題になるのが時差である。
インターネットは世界中からアクセスできる。
先ほどのブログの例で、本文が2006年4月24日13時20分30秒に日本で書きこまれたとしよう。
この時刻をそのままカリフォルニア州でも表示すると、アメリカ人ユーザーは違和感を感じるだろう。
なぜなら、そのとき、カリフォルニアの時計は2006年04月23日20時20分を示しているからだ。
もちろん、カリフォルニアで未来の日本のブログが読めるわけではない。両者に17時間という時差があるためだ。
このような問題を避けるため、一般的に、以下の2つの方法がとられる。
- タイムスタンプはローカル時間とし、 世界標準時から何時間ズレているのか明示する。 クライアント側でローカル時間に変換する。
- タイムスタンプは世界標準時とし、 クライアント側でローカル時間(現地時間)に変換する。
ここでいう世界標準時とは、
厳密には、協定世界時(UTC)のことである。
| 2006年10月28日更新 | ||
| <<前へ | <目次> | 次へ>> |
| 戻る | 【関連ページ】 | |