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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のwhileを使ってプログラムを組みたいです!自分でやってみたのですが答えが合わないので教えて 3 2022/06/30 18:08
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- 高校 高校生です。数学に関して、 pとcの違いが全くわかりません。 並べるのはpで選ぶのはc 選ぶだけがc 2 2022/07/23 17:18
- C言語・C++・C# 絶対ち 5 2022/10/09 17:36
- 医療・安全 本土の皆さん、どうすればいいか?正解はなんでしょうか? 数週間後は直面しますよ、そのまま秋以降はイン 7 2023/07/07 05:00
- 政治 日本の無駄に多い信号機の数々。これも無能自公政権が無能な国土整備政策を打っていて、しっかり都市計画を 1 2022/05/02 21:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
4バイト整数を使っているため
-
DirectX C++/CLIで作成したDLL...
-
変数名の付け方
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
複数の変数を宣言する時、同時...
-
グローバルIPとプライベートIP...
-
VB.NET getとsetの概念がわかり...
-
final修飾子を使っているのに、...
-
パワーポイントのVBAでテキスト...
-
VBAでの[]
-
クラス間でのデータ参照
-
Java初級 引数に適用できません
-
tryの終了
-
「天声人語」をインターネット...
-
VB.NETでフォーム上にExcelのよ...
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
コマンドプロンプト実行後に画...
-
Excel VBA 定数にオブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
4バイト整数を使っているため
-
MFCで水平スクロールバー
-
DataGridで特定の行のスタイル...
-
LV_ITEM構造体のメンバlParamに...
-
VC++.NET2003でユーザー関数内...
-
セットアップ先のPCでエラー
-
DirectInputが上手く動きません;
-
Varianntメモリリークについて
-
python3 各引数の意味と、引数...
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
3年間同じクラスになる確率
-
パワーポイントのVBAでテキスト...
-
private static という変数の修飾
-
「天声人語」をインターネット...
-
VB.NET getとsetの概念がわかり...
-
エクセルVBAにおけるON TIMEメ...
-
【sendkeysメソッドが動かずに...
おすすめ情報