如果我在c中有一个表示日期的整数,我该如何打印出实际的mm / dd / year?
64位值,表示自1601年1月1日(UTC)以来100纳秒间隔的数量
1183042181
如果我在32位系统上,并且必须从文件读取整数?
C而不是C ++
答案 0 :(得分:3)
C的库包含strftime函数,它将使用指定的格式字符串格式化struct tm。当然,从那里你可以打印出来。所以:
答案 1 :(得分:2)
阅读MSDN部分:
<强>说明强>
将FILETIME结构转换为 时间很容易显示到 用户,使用FileTimeToSystemTime 功能
答案 2 :(得分:1)
将时间加入struct tm
并致电strftime()
。
全部在<time.h>声明。
答案 3 :(得分:0)
您可以使用此例程将64位值转换为time_t结构
time_t FileTimeToUnixTime(FILETIME& ft)
{
ULARGE_INTEGER li;
assert(sizeof(ULARGE_INTEGER) == sizeof(FILETIME));
memcpy(&li, &ft, sizeof(FILETIME));
li.QuadPart -= 116444736000000000;
li.QuadPart /= 10000000;
return (time_t)(li.LowPart);
}
当然,只有当你的FILETIME真的在time_t范围内时,这才有效。我想你知道如何处理产生的time_t。
32位系统不会阻止您将64位读取为二进制值。如果您更喜欢scanf,可以使用“%llu”格式。