Ben değerler diyelim (isimlerinin tekabül içeren bir "Okunabilir" değişkenleri hours
, minutes
, seconds
, day
, month
, year
<windows.h>
'dan SYSTEMTIME
yapısına sahibim).
Bir chrono::time_point
oluşturmak için bulunan tek yoludur:en zarif şekilde kronostratigrafik birleştirmek :: time_point saat, dakika, saniye vb den
SYSTEMTIME sysTime = ...; // Came from some source (file, network, etc.)
tm t;
t.tm_sec = sysTime.wSecond;
t.tm_min = sysTime.wMinute;
t.tm_hour = sysTime.wHour;
t.tm_mday = sysTime.wDay;
t.tm_mon = sysTime.wMonth - 1;
t.tm_year = sysTime.wYear - 1900;
t.tm_isdst = 0;
std::chrono::system_clock::time_point dateTime =
std::chrono::system_clock::from_time_t(mktime(& t));
Birincisi, SYSTEMTIME
bir milisaniye kaybetti.
İkincisi, (mmm ...) Bu tür bir dönüşümü sevmiyorum))
Bu sorunu daha zarif bir şekilde verebilir misiniz? this open source, header-only library kullanma
Eğer ** fiili ** 'SİSTEMTIME' varsa, bkz. 'SystemTimeToFileTime()'. – MSalters
@MSalters 'SystemTimeToFileTime()', 1 Ocak 1601'den beri bana 100 nanosaniyelik aralıklarla bir aralık verir, ancak chrono :: time_point' – borisbn
True'ye ihtiyacım var. Ama bu matematik biraz kolaylaştırır. 1-1-2000 için FILETIME ve 'chrono :: time_point' (aralık dışı sorunları önlemek için - bunu bir kez yapabilirsiniz), FILETIME öğesinin mevcut zamandan çıkarılması, 10 saniye ile mikrosaniye elde edilmesi ve bu mikrosaniyelerin eklenmesi 1-1-2000'e kadar time_point – MSalters