C ++ 64位时间戳到32位time_t

时间:2012-09-26 08:30:34

标签: c++ 32bit-64bit

我想将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 problem。任何想法如何解决这个问题?或者是strftime的替代品。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我不确定您正在使用哪个工具集,但Microsoft编译器支持函数_localtime64_s,它将64位时间值转换为tm结构,然后您可以将其与{{3}一起使用}。

如果您的CRT不支持64位时间功能,请查看:strftime