ページ 11

localtime関数の挙動がおかしい

Posted: 2011年6月07日(火) 19:15
by がるる
すみませんが、皆様のお知恵を貸していただきたく書き込ませていただきます。
下記の環境でlocaltime関数を用いて時間を取得しようとしたのですが、
2011年5月30日23:59:59の次が6月1日00:00:00になってしまって困っています。
下記がその検証用コードと実行結果です
おそらく私が何かミスしていると思うのですが、問題が見つかりません。
宜しくご指導ください。

コード:

int main ( int argc, char **argv )
{
    time_t utime,
           ntime;
    struct tm *t_st;

    utime =  1309445999;     
    t_st = localtime ( &utime );
    printf ( "%d/%d/%d %d:%d:%d\n" , t_st->tm_year+1900 , t_st->tm_mon , t_st->tm_mday , t_st->tm_hour , t_st->tm_min , t_st->tm_sec);
    ntime = utime + 1;
    t_st = localtime ( &ntime );
    printf ( "%d/%d/%d %d:%d:%d\n" , t_st->tm_year+1900 , t_st->tm_mon , t_st->tm_mday , t_st->tm_hour , t_st->tm_min , t_st->tm_sec);
    printf("utime=%ld, ntime=%ld\n" , utime, ntime);
}
codeタグをお使いください。 http://dixq.net/board/board.html by softya(ソフト屋)

実行結果
2011/5/30 23:59:59
2011/6/1 0:0:0
utime=1309445999, ntime=1309446000

使用環境 winxp32bit版 Dev-c++ で gcc 4.50 を用いて作成

Re: localtime関数の挙動がおかしい

Posted: 2011年6月07日(火) 19:47
by 初級者
tm_monは、確かゼロ始まりだったような気がします。

Re: localtime関数の挙動がおかしい

Posted: 2011年6月07日(火) 20:24
by がるる
ありがとうございます。
解決しました。
ついうっかり忘れていました。
お恥ずかしい。