2

システムコマンド「date」を使用してシステム日付を設定するために、64ビットのタイムスタンプ(私たちの場合)を日付文字列に変換したいと思います。私はこのソリューションを見つけて実装しました:

char loc_ach_buf[25];
uint64_t loc_ui64_TimeStamp_us;
time_t loc_t_TimeStamp_s;
...         
loc_t_TimeStamp_s = loc_ui64_TimeStamp_us / 1000000;
strftime(loc_ach_buf, sizeof(loc_ach_buf), "date %Y%m%d%H%M.%S", gmtime(&loc_t_TimeStamp_s));
system(loc_ach_buf);

これは正常に機能しますが、私の問題は、time_tが私のシステムでは32ビット値であるため、2038年問題が発生することです。これを解決する方法はありますか?または、strftimeに代わるものはありますか。

4

2 に答える 2

0

どのツールセットを使用しているかはわかりませんが、Microsoft コンパイラは_localtime64_s関数をサポートしています。これは、64 ビットの時刻値を tm 構造体に変換し、それをstrftimeで使用できるようにします。

CRT が 64 ビット時間関数をサポートしていない場合は、これを見てください: A version of gmtime() that works around the 2038 bug

于 2012-09-26T09:06:07.027 に答える
0

システム コマンド「date」を使用する理由 SetSystemTime API 呼び出しを使用します。

于 2012-09-26T08:37:18.700 に答える