將由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