将由GetLocalTime返回的SYSTEMTIME结构转换为时间戳(自1970年以来的秒数ULONG)会怎样?将本地时间转换为时间戳
回答
一种方法是将参考时间和目标时间都转换为FILETIME
结构,然后您可以根据它们的值执行简单的算术运算。这些以100ns为单位进行测量,因此您需要将最终结果除以10000000以获得秒数。
// reference time, convert to FILETIME
SYSTEMTIME stRef{};
stRef.wYear = 1970;
stRef.wMonth = 1;
stRef.wDay = 1;
FILETIME ftRef;
SystemTimeToFileTime(&stRef, &ftRef);
// target time, convert to FILETIME
SYSTEMTIME stTarget;
GetLocalTime(&stTarget);
FILETIME ftTarget;
SystemTimeToFileTime(&stTarget, &ftTarget);
// convert both to ULARGE_INTEGER
ULARGE_INTEGER ulRef, ulTarget;
ulRef.HighPart = ftRef.dwHighDateTime;
ulRef.LowPart = ftRef.dwLowDateTime;
ulTarget.HighPart = ftTarget.dwHighDateTime;
ulTarget.LowPart = ftTarget.dwLowDateTime;
// subtract reference time from target time
ulTarget.QuadPart -= ulRef.QuadPart;
// convert to seconds (divide by 10000000)
DWORD dwSecondsSinceRefTime = ulTarget.QuadPart/10000000i64;
不是应该的'GetSystemTime'代替'GetLocalTime'?即使我们处于不同的时区,我们现在也应该看到相同的时间戳。 –
@BarmakShemirani这就是OP所要求的,当然你可以使用任何时间戳。这是重要的方法。 –
我不知道我在OP的问题中错过了GetLocalTime。也许早期的痴呆症。 –
- 1. 将服务器时间戳转换为本地时间戳
- 2. 将UTC时间戳转换为本地设备时间戳
- 3. 将时间戳转换为时间戳
- 4. Java:如何将UTC时间戳转换为本地时间?
- 5. 将时间转换为Unix时间戳
- 6. 将时间戳转换为时间()
- 7. 将时间戳转换为时间
- 8. Excel将文本转换为时间戳
- 9. Postgresql将文本转换为时间戳
- 10. 将GMT时间戳与GMT偏移量转换为本地PHP时间戳
- 11. 使用本地时区将unix时间戳转换为NSdate
- 12. 将unix时间戳转换为当地时间
- 13. 将时间戳转换为UTC时区
- 14. 将Unix时间戳转换为时区?
- 15. 将时间戳转换为时区
- 16. Perl:如何将unix时间戳+时区转换为本地时间
- 17. 将时间秒从时间转换为本地时间
- 18. 强制将时间戳或时间间隔字符串转换为时间戳
- 19. 将json时间戳转换为正则java时间戳
- 20. 如何将java时间戳转换为php时间戳?
- 21. 如何将Evernote API时间戳转换为Postgresql时间戳
- 22. 将unix时间戳转换为H2时间戳
- 23. 将字符串时间戳转换为PHP中的时间戳
- 24. Python:将Varbinary类型的时间戳转换为unix时间戳
- 25. 将UTC中的时间戳转换为时间戳
- 26. 如何将时间戳转换为php中的unix时间戳?
- 27. 将Java时间戳转换为MySQL时间戳反之亦然
- 28. 将时间戳长转换为时间戳错误
- 29. 如何将用户本地时间戳转换为格林威治时间
- 30. 如何将时间戳字符串转换为本地时间字符串?
供参考:ISO具有时间戳标准[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) – chux