人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

UNIX TIMEを用いるメリットは何でしょうか?2038年問題などの問題もあり、今の時代に敢えて使用するメリットがわかりません。昔はメリットとされたこと、今後も他の形式(文字列型、日付型など)を使用するよりもメリットとなることを教えてください。私自身が漠然と不思議に思ったことなので、どういった視点からの回答でも構いません。


●質問者: dam-soya
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:2038年問題 TIME UNIX メリット 不思議
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● j1960
●40ポイント

メリットは他でも使っているから。

時間を扱うシステムはUNIX系のサーバーが多い。少なくとも昔はそうだった。定義も明確で間違いようが無い。

サーバー同士で共通の時間をやりとりする必要がある場合に共通の仕組みを使った方が便利なので皆UNIX TIMEを用いている。

少なくとも、今はちゃんと使えているのでここ数年のレンジで変更する必然性もなくそのまま使っている。

というのが現実だと思いますね。

日付型や文字列型はそれこそ千差万別に種類があるので元となる形式を決めないと始まらないし。

◎質問者からの返答

なるほど、広く使われている上に定義も明確であることが大きな理由なのですね。

日付型や文字型というだけでは、比較対象にならないですよね…もう少しいい例を考えるべきでした。


2 ● watch00
●25ポイント

>どういった視点からの回答でも構いません。

では遠慮なく。

2038年以降は、使えなくなるので、

仕事が確実に確保できます。

http://blog.hooktail.org/?eid=410363

◎質問者からの返答

(笑)

UNIXTIMEを使うことで、将来の仕事を増やすわけですね


3 ● pahoo
●30ポイント

UNIX TIMEと2038年問題は、直接的に結びつくものではありません。

UNIX TIMEを表現するtime_t型が32ビット型で実装されているケースが多く、そのために2038年問題が起きるわけですが、1999年に策定されたC99では64ビットの long long 型が加わり、time_t型をunsigned long long(64ビット)で定義しているCコンパイラも登場しています。こうした処理系を使えば、2038年問題は回避できます。

また、time_t型を引数とするctime関数は、「うるう秒」を補正してくれます。1972年以降、23回のうるう秒が発生していますから、長期にわたる時間計算においてはUNIX TIMEのメリットはあると思います。


参考サイト

◎質問者からの返答

うるう秒の存在は完全に失念していました、ありがとうございます。確かに他の日付を表す形式では、少々扱いに困りますよね(変換が複数回必要になったり、そもそも秒数までカウントしていなかったり)。

64ビットまで対応すれば私が挙げた問題も関係なくなるわけで、デメリットは使い方次第になりそうですね


4 ● hujikojp
●30ポイント

永続的なデータに Unix timeを使うのがいいかはいまとなってはやや疑問が残りますが、j1960さんも書いているような冗長性の少なさはまだ魅力だと思います。

次は JavaTimeあたりでどうでしょう:

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Time.html#setTi...(long)

◎質問者からの返答

計算の手間は確かに少ないですよね。Java初級者の私もUNIX TIME関連の関数は少しづつ覚えながら活用しています。

JavaTimeについては、次に学習するべき知識、という意味でよろしかったですか?


5 ● b-wind
●40ポイント ベストアンサー

現状で

などの条件を満たしているのがたまたま UNIX TIME だっただけ、という気がします。

もちろん最初に出ている「普及している」は最重要項目ですが、他でダメという理由はありません。

実際 RDBMS 等で使用されている timestamp 型は実装にもよりますがミリ秒までの精度をもち、過去・未来において UNIX TIME より広い範囲を扱えるものもありますが、

処理効率や、メモリ使用量の点で通常の利用に必要かどうかは疑問です。


また、2038年問題自体は UNIX TIME 自体の問題では無いと考えています。

これを扱うための time_t 型の代表的な実装がたまたま 32bit だっただけで 64bit の実装があれば、2038年問題は発生しません。

(問題を未来に先送りするだけですが)

本質的な問題は残りますが、現実的に取りうる対処としてはベターだと思います。

◎質問者からの返答

ちょっと調べてみましたが、MySQLでは以下の通りなんですね。今まであまり考えずにTIMESTAMP型を使っていたので勉強になりました。

DATETIME型 1000-01-01 00:00:00?9999-12-31 23:59:59

TIMESTAMP型 1970-01-01 00:00:00?2037年の一定の時点

引用元:http://powerdee.com/it/mysql/dataTypes.html

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ