我需要将一个QDateTime传递给接受费列特的Win32函数。
这是MSDN对FILETIME的定义:
包含一个64位值,表示自1601年1月1日(世界协调时)以来每隔100纳秒的时间.
发布于 2013-10-31 11:06:50
我做了一个函数来做这个,我测试了它,它起作用了:
// Convert a QDateTime to a FILETIME.
FILETIME toWinFileTime(const QDateTime &dateTime)
{
// Definition of FILETIME from MSDN:
// Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).
QDateTime origin(QDate(1601, 1, 1), QTime(0, 0, 0, 0), Qt::UTC);
// Get offset - note we need 100-nanosecond intervals, hence we multiply by
// 10000.
qint64 _100nanosecs = 10000 * origin.msecsTo(dateTime);
// Pack _100nanosecs into the structure.
FILETIME fileTime;
fileTime.dwLowDateTime = _100nanosecs;
fileTime.dwHighDateTime = (_100nanosecs >> 32);
return fileTime;
}https://stackoverflow.com/questions/19704817
复制相似问题