
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ランキング
-
4バイト整数を使っているため
-
「タイプ初期化子が例外をスロ...
-
eclipse-Tomcatでのデバッグに...
-
関数内の変数に<summary>コメン...
-
エクセルVBAで、条件に一致する...
-
中学のクラス数
-
javascriptからjavaを呼び出したい
-
【sendkeysメソッドが動かずに...
-
Excelで =EMBED("Acrobat Docu...
-
引数で日付を2つ与え、その間の...
-
JavaScriptからJAVAクラスを呼...
-
サーブレットコンテキストの意...
-
UMLのクラス図はmain()も含むん...
-
リフレクション
-
0歳児の指しゃぶりに関して
-
final修飾子を使っているのに、...
-
変数名の付け方
-
ウィンドウを最前面にできません
-
Java リフレクションについて
-
String.containsの反対機能はあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MFCで水平スクロールバー
-
4バイト整数を使っているため
-
python3 各引数の意味と、引数...
-
Varianntメモリリークについて
-
DataGridで特定の行のスタイル...
-
DirectInputが上手く動きません;
-
LV_ITEM構造体のメンバlParamに...
-
「タイプ初期化子が例外をスロ...
-
ヒグマを撃退
-
Dispose()は、どんな時に使うの...
-
VB.NETでのnothing の意義について
-
中学のクラス数
-
0歳児の指しゃぶりに関して
-
エクセルVBAで、条件に一致する...
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
private static という変数の修飾
-
C#において、同じインスタンス...
-
String.containsの反対機能はあ...
-
VB.NETでフォーム上にExcelのよ...
おすすめ情報