• ベストアンサー

4バイト整数を使っているため

miswaki777の回答

  • ベストアンサー
回答No.3

#2の者です。 2038年問題は、私も非常に関心を持っています。 「time(NULL) 2038」で検索してみました。 やはりtime()関数自体は2038年問題に対応していないようです。 下記のサイトに解説が載っています。 時間と2038年問題 http://www.birdport.jp/c-guide/lessons/28.htm _time64()という関数を見つけました。 下記のサイトを参照して下さい。 time、_time64 http://www.asia.microsoft.com/japan/msdn/library/ja/vclib/html/_CRT_time.asp?frame=true 下記のサイトも参考になります。 188707 - INFO年オーバーフローがVisual C++と2000年問題をそれによって発生します。 http://support.microsoft.com/default.aspx?scid=kb;JA;188707&Product=vcJPN KATA World ぷろぐらむ アーカイブ http://katakuri.sakura.ne.jp/~kata/archives/cat5/cat5.html 現在、特効薬がないか、調査中です。

keyguy
質問者

お礼

ありがとうございます #include <time.h> #include <stdio.h> #include <sys/types.h> #include <sys/timeb.h> #include <string.h> をつけても __time64_t __mktime64 __localtime64 などが未定義エラーになります Borland C++5.5.1(無償版)を使っていますがこれがいけないのかもしれません

関連するQ&A

  • 2038年問題 日付算出

    2038年問題で困っています。 指定した日付から指定した日数後および前(マイナス日数)の日付を取得するCのプログラムがあります。 これまでmktime関数をして算出していましたが、2038年以降の日付を指定するとエラーになるようです。 上記関数をmktime関数を使用せず自前で作成しないといけないのですが、どう作っていいか思いつきません。どなたか参考になるようなサイト、およびサンプルプログラムがあれば教えていただきたいと思っています。 よろしくお願いします。

  • localtime() 関数についての質問

    C言語の勉強をして間もない者です。 time_t = current; struct tm = *local; time(&current); local = localtime(&current); こんなのがlocaltime関数を使った一般的なプログラムだと思いますが、なぜlocaltimeの引数がcurrentのポインタなのでしょうか? 別にcurrentには値を代入しないのだから、localtime(current)でもいいとおもうのですが、ポインタにした必然的理由があるのでしょうか?

  • ユニックス時間(秒)を普通の日付時間(時:分:秒)に直すにはどうすればいいでしょうか。

    こんにちわ。質問させて頂きます。 C言語で、pcap.hによってキャプチャされたパケットのタイムスタンプ(秒)を、標準時間と申しますか、時:分:秒に直したいと考えています。 時間変換の関数で、ctime,asctime,localtime等があるのは分かっているので、localtime関数を使おうと思っているのですが、使ってみたところポインタのタイプが違うのでエラーが出てしまいます。 具体的には、 方法(1):time_t変数に代入してやってみる struct tm *t_st; time_t timer; timer = header->ts; t_st = localtime (&timer); 方法(2):localtime関数に直接放り込む t_st = localtime (&header->ts); 等を試してみたのですが当然アウトでした。 パケットヘッダの中の時間を表すheader->tsをどうにかlocaltime関数で使いたいと考えています。 これを解決する良い方法はあるでしょうか。 ご存知であればご教授いただけないでしょうか。どうぞよろしくお願いします。

  • C言語で分からないところがあります。整数値の分割取得みたいなこと・・

    C言語で分からないところがあります。整数値の分割取得みたいなこと・・ で困っています。 僕はC言語初心者です。 コンパイラはVC2008です。 今回整数値を分割して取得したいと考えています。 例えば次のような整数値(int型)があったとします。 235465667 この整数値を3つにわけて取得したいのです。つまり 235 465 667 としたいのです。このような働きをしてくれる便利な関数はないのでしょうか? 調べてみたのですが、内容が内容だけに探しにくくて見つけられませんでした。 もし、関数がなければ、どのようにすれば取得できるかコードを教えてほしいです。 よろしくお願いします!

  • mktimeについて教えてください

    今、日付の差を出すプログラムを作っているのですが mktime()関数では 1970年~2038年までしか 対応していないことがわかりました mktime()以外で 日付を Unix のタイムスタンプとして取得する 関数ってありますか?

    • ベストアンサー
    • PHP
  • localtimeはどうやって現地時刻を返すか教えてください

    UNIXでCプログラミングをしています。 localtime()は「現地時刻を返す」と教わりました。 東京で実行していればJSTが、ロンドンで実行していれば GMTが返ってくる、ということですよね。 では、localtime()関数はどのようにして 「現在実行している地域」がわかるのでしょうか、また は何を判断して現地時刻を返すのか教えてください。 よろしくお願いいたします。

  • fortranで、C言語のsizeof関数に相当するものが分からない

    データ型のバイト数を調べる際、C言語ではsizeof関数が用いられますが、Fortranではどうすればよいでしょうか? 一つの関数でなくとも、そのような機能をもつルーチンでも構いません。

  • 日付の計算をmktimeの仕様にしたい

    こんにちは。下のような実行ソースプログラムを作ったのですが、 <?php   echo("2005/1/29の1ヶ月後:". date( "Ymd", mktime(0,0,0,1+1,29,2005) )."<BR>" );   echo("2005/1/30の1ヶ月後:". date( "Ymd", mktime(0,0,0,1+1,30,2005) )."<BR>" );   echo("2005/1/31の1ヶ月後:". date( "Ymd", mktime(0,0,0,1+1,31,2005) )."<BR>" ); ?> 実行結果において > 2004/1/30の1ヶ月後:20040301 > 2005/1/29の1ヶ月後:20050301 > 2005/1/30の1ヶ月後:20050302 のような不具合が出てしまいます。どう直してよいものか行き詰ってしまっているので、どなたかアドバイスを宜しくお願いします。 基本形はfunction_exという関数を作って↓ function mktime_ex(...) {   例外処理   必要に応じて return  // その他は、標準機能に任せる  return mktime( sec, min, hour, ... ); } という形にしたいと思っています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 長方形の交わりを求める関数をください

    Win32APIにIntersectRect()という関数があります。この関数は2つの長方形が交わっているか否かを調べ、交わっているなら交差長方形を求めてくれます。この関数と同等の機能をもつC言語の関数とそのソースコードを,どなたかくださいませんか.

  • エフェクターの調子が悪いのですが。

    忙中お手数かけます。 私の愛器「DIGITECH RP-1」が Over flowのインジケータを点灯させ パッチNo.表示が 888 になったまま 機能しなくなりました。 昨日まで調子よく動いていたのですが、突然のことで 参っています。 古いものですが、愛着のあるものなので どなたか悩めるギターモンキーに原因と対策の知恵を授けてください。 よろしくお願いします。