簡體   English   中英

C ++ 64位時間戳到32位time_t

[英]C++ 64bit timestamp to 32bit time_t

我想將64位時間戳(以美國為單位)轉換為日期字符串,以便通過系統命令“ date”設置系統日期。 我發現/實現了此解決方案:

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是系統上的32bit值,因此2038年將出現問題 任何想法如何解決這個問題? 還是strftime的替代品。

為什么要使用系統命令“日期”? 使用SetSystemTime API調用。

我不確定您使用的是哪個工具集,但是Microsoft編譯器支持_localtime64_s函數,該函數會將64位時間值轉換為可用於strftime的tm結構。

如果您的CRT不支持64位時間功能,請查看以下內容: 可以解決2038錯誤的gmtime()版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM