TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

mark Software Developer's Think IT mark 失敗しないソフト選び Find-IT mark テクノロジーポータル TEDIA

会員登録 登録情報管理

TEDIA SponsorsOpen Source Web Development Tutorials - Dev Shed

UNIXの時刻フォーマットの謎を解明する
(2008/11/17公開)

UNIXの時刻フォーマットの謎を解明する

 UNIXフォーマットのタイムスタンプは広く使用されている。その理由は、この記事を読んでいくうちにお分かりになるだろうが、ここでは、UNIXの時刻フォーマットは日時の取り扱いが簡単で、リソースの使用効率が優れているからとしておこう。この記事では、このコンセプトの謎を解明し、その背後に存在する理論を学び、最終的には、伝統的なISO標準とUNIXフォーマット間の相互変換を行うアルゴリズムを記述して実装することを目的とする。UNIXの時間はPOSIX時間とも呼ばれることがあり、独自のシステムを使用して、時刻を表す、比較的「単純な」フォーマットである。単純という表現を選択した理由は、いちべつしたときの印象とは異なり、この記事を読めば、非常に単純で効率の良いことが分かること請け合いだからである。

(画像提供、Cubus)

 理由はどうであれ、今までに触れたことのない人のために、UNIX形式での日時の表現の例をいくつか挙げてみることにしよう。次の例を見てほしい。


962452800 -> 2000-07-01T12:00:00+00:00 -> Sat, 01 Jul 2000 12:00:00 +0000

1215129600 -> 2008-07-04T00:00:00+00:00 -> Fri, 04 Jul 2008 00:00:00 +0000

1577909730 -> 2020-01-01T20:15:30+00:00 -> Wed, 01 Jan 2020 20:15:30 +0000


 上の3つの例は、いずれも、最初がUNIXの時刻フォーマットで指定した時刻、次が広く使用されているISO 8601標準、最後がRFC2822フォーマットで、このフォーマットはインターネットメッセージフォーマット(Internet Message Format)とも呼ばれている。RFC2822に関する詳細な指針および情報については、このドキュメントを読むことをお勧めする。この公式の文書には、この標準規格とその概要が説明されている。

 UNIX時刻の例をいくつか見てみたが、これらの数字の羅列は何か変だなと思ったはずだ。意味のある日時を表しているのではと考えると、どうもおかしい。それでは、その理論とその背後に存在する仕組みを次のページで説明することにしよう。


1    2    3    4    次のページ

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.