Welcome

« fsck に3時間以上(;´Д`) | メイン | SE7505VB2 Bios update メモ »

2004年07月11日

なんか日付が出ないぞ!@VC

ぷろぐらむ

以下のコードを書いて見る
time_t t;
struct tm* ts;

time( t );
ts = localtime( &t );
if( ts ) printf( "%02i:%02i", ts->tm_hour, ts->tm_min );

日付が出ない(笑
ts に localtime がNULL をかえしているようだ。

んーなんでだろー。 不安定なのかなぁ。


ランタイム ライブラリ リファレンス
localtime、_localtime64
時刻値を現地のタイム ゾーンに合わせて変換します

ふむふむ。。 ん? 64 ?(;´Д`)


localtime 関数が世界協定時刻 (UTC) における
2038 年 1 月 18 日 19 時 >14 分 07 秒までを表すのに対し、
__time64_t 構造体を使用する _localtime64 関数では、
世界協定時刻における 3000 年 12 月 31 日 23 時 59 分 59 秒までを
表すことができます。

っていうことで時計を見てみる。 2088年1月1日。
いつだよオレ!!!
そして、localtime は 2038年以降はツカエネーのかよ!

つーことで書き直す
__time64_t t;
struct tm* ts;

_time64( t );
ts = _localtime64( &t );
if( ts ) printf( "%02i:%02i", ts->tm_hour, ts->tm_min );

めでたく 非ANSIコードが出来上がった 万歳

localtime
2038年問題

投稿者 kata : 2004年07月11日 00:17

Trackback Pings

このエントリーのトラックバックURL:
http://katakuri.sakura.ne.jp/~kata/mt-tb.cgi/22

コメント

非ANSIというのが大爆笑。

投稿者 Disca : 2004年07月11日 14:13

2038年問題。
2000年問題のときにちょっと話題になったのを
すっかり忘れてて、へんてこなことになってた ^^;

修正後も3001年以降はどうするんだって感じで
根本的な解決になっていない。さすがだ(笑
エライ人曰く「というか根本的な解決をしてしまうとおまんまの食い上げになるから」

投稿者 kata : 2004年07月11日 21:01

コメントしてください




保存しますか?