已尝试查找功能SystemTimeToFileTime的完整模拟,但找不到它。
我有所有的SYSTEMTIME和FILETIME结构,在linux上SYSTEMTIME可以正常工作,用于日期差异函数:
int64_t Delta2(const SYSTEMTIME st1, const SYSTEMTIME st2) {
union timeunion { FILETIME fileTime; ULARGE_INTEGER ul; } ;
timeunion ft1;
timeunion ft2;
SystemTimeToFileTime(&st1, &ft1.fileTime);
SystemTimeToFileTime(&st2, &ft2.fileTime);
return ft2.ul.QuadPart - ft1.ul.QuadPart;
}有人知道SystemTimeToFileTime函数的确切替代方法吗?
发布于 2013-02-01 20:58:18
我建议你参考WINE项目的源码,它将包含你所需要的东西。
发布于 2013-02-01 21:05:20
FILETIME只是一个10毫秒精度的时间戳,分成两个32位数字。POSIX时间戳(具有第二个分辨率)可以简单地乘以100得到它。
要将SYSTEMTIME转换为FILETIME,可以使用相关字段创建一个struct tm,然后使用mktime创建一个time_t。将时间戳放入64位整数中,乘以100 (得到10毫秒分辨率),再加上SYSTEMTIME wMilliseconds字段(除以10),就得到了FILETIME。
发布于 2013-02-01 21:21:25
https://stackoverflow.com/questions/14646822
复制相似问题