前提・実現したいこと
time()関数で取得した時間をlocaltime_s()関数で変換して現時間を取得したい。
参考にしたサイトから考えられる値(1900年からの経過年数)とは違う値が取得できてしまうのがなぜか知りたい。
また、1900年からの経過年数を取得するためにはどのようにすればよいのか知りたい。
よろしくお願いいたします。
発生している問題・エラーメッセージ
localtime_r()によってtm構造体に格納される値のtm_yearには1900年からの経過年数が入っているはずだが18が入っている。
そのため年が100年前の1918年として取得されてしまう。
該当のソースコード
c++
1#inlucde <sstream> 2void Main(){ 3 4 time_t hoge = time(NULL); 5 long fuga = (long)hoge; 6 std::stringstream ss; 7 8 tm timeInf; 9 localtime_s(&timeInf, &hoge); // ロケールを考慮した時刻情報の取得 10 ss << timeInf.tm_hour + 1900 << timeInf.tm_mon+1 << timeInf.tm_mday; 11 MesasgeBox(CString(ss.str().c_str()); 12} 13
補足情報(FW/ツールのバージョンなど)
- VisualStudio2015SP1
- Windows7/64bit SP1
- VC++/MFC
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/22 23:34