2

我想将 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 在我的系统上是一个 32 位的值,所以会有问题Year 2038 question。任何想法如何解决这个问题?或者有没有 strftime 的替代品。

4

2 回答 2

0

为什么使用系统命令'date'?使用SetSystemTime API 调用。

于 2012-09-26T08:37:18.700 回答
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 回答