
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 …
下記のサイトも参考になります。
188707 - INFO年オーバーフローがVisual C++と2000年問題をそれによって発生します。
http://support.microsoft.com/default.aspx?scid=k …
KATA World ぷろぐらむ アーカイブ
http://katakuri.sakura.ne.jp/~kata/archives/cat5 …
現在、特効薬がないか、調査中です。
ありがとうございます
#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(無償版)を使っていますがこれがいけないのかもしれません
No.2
- 回答日時:
WindowsのAPIは私が調べた範囲ではみつかりませんでした。
代わりにMFCにはCOleDateTimeというクラスがあり、このクラスでは2038年問題に対応しています。
◆サンプルソース
COleDateTime dateTest;
dateTest = COleDateTime::GetCurrentTime();
CString strDate;
strDate.Format("%d年%d月%d日" , dateTest.GetDayOfYear() , dateTest.GetMonth() , dateTest.GetDay());
SDKでプログラミングを組んでいるのであれば、COleDateTimeクラスを利用して、MFCで日付取得用の関数を呼び出せるDLLを作成しておくという手があります。
もしくは、MFCのCOleDateTimeクラスのソースを解読してどういった処理をしているかを調べる方法もあります。
私も、ソースを解読してみましたが、よくわかりませんでした。
COleDateTime::GetCurrentTime()関数の処理は、
COleDateTime PASCAL COleDateTime::GetCurrentTime()
{
return COleDateTime(::time(NULL));
}
といった処理です。
つまり::time()関数を使っているようです。
ただし、::time()関数が2038年以降に対応しているというわけではないと思います。
その後、(年を取得する処理を例にとると)COleDateTime::GetYear()関数の内部で、_AfxTmFromOleDate()という関数が呼び出され、この関数の中で、いろいろと処理を施して、正確な値を取り出しているようです。
ちなみに私の開発環境は、MSVC++6.0です。
ありがとうございます
MFCは使っていないのが残念です
結局自分で日付演算をしたほうが早そうですね
4年に一回のうるう年を100で割り切れる年の内400で割り切れない年だけ無にすれば良いという簡単な条件ですから

No.1
- 回答日時:
C言語では時刻はtime_t型で表現していますが、
64ビットモードの場合は、このtime_t型が8バイトになります。従って、2036年以降でも、64ビットモードであれば、問題なく動作します。
64ビットモードの対応は、Solarisでは対応済です。他のOSは詳細不明ですが、Linuxも64ビット版がでていると思います。(Linuxで64ビットでの使用経験はないので自信なしです)。Windowsはまだ対応していないと思いますが、まもなく対応すると思われます。(これも自信なし)
ありがとうございます
2036年は正確に求めてみると
2038年1月19日12時14分7秒でした
time_tでは256×256×256×128-1です
Windowsでは対応していないようですが
APIでも対応している関数は無いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python3 各引数の意味と、引数...
-
LV_ITEM構造体のメンバlParamに...
-
DirectInputが上手く動きません;
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
レコード件数の表示
-
オブジェクト参照がオブジェク...
-
変数名の付け方
-
複数のクラスで共通した関数を...
-
c++,ある関数のクラスから別の...
-
JSPで<SELECT>の中にDBから持っ...
-
EXCEL VBAにて動的にCheckBOXを...
-
Fileの読み取り専用の解除
-
VBScriptからストアドプロシー...
-
Timestamp型への変換について(J...
-
servletからjspへオブジェクト...
-
ワードで画像をドロップすると...
-
VBPをダブルクリックするとたま...
-
Java初級 引数に適用できません
-
VB.Net Object型 空かどうか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MFCで水平スクロールバー
-
4バイト整数を使っているため
-
Varianntメモリリークについて
-
SQL パラメーターの表示について
-
DirectInputが上手く動きません;
-
DirectX C++/CLIで作成したDLL...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
レコード件数の表示
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
僕の出身中学校は200人同級生が...
-
インスタンス参照でアクセスで...
-
Java初級 引数に適用できません
-
配列のメソッド
-
今日は こどもの日 で、良い天...
-
mainメソッドのthrows節で設定...
-
生成したインスタンスを削除す...
-
VB.NETでフォーム上にExcelのよ...
おすすめ情報