std::chrono::time_point::time_since_epoch()
restituisce un duration
, riferito a qualche time_point
in passato. Quando è un tale time_point
? Dipende dall'implementazione del C++ o è definita dallo standard C++? O è di fatto uno standard per impostare l'epoca al 1 ° gennaio 1970 UTC?Quando è std :: chrono epoch?
risposta
È una funzione sia dello specifico 01 che del time_point
fa riferimento, sia dell'implementazione di tale clock
. Lo standard specifica tre diversi orologi:
system_clock
steady_clock
high_resolution_clock
e lo standard non specifica l'epoca per uno di questi orologi.
I programmatori (voi) possono anche creare i propri orologi, che possono o non possono specificare un'epoca.
C'è uno standard di fatto (non ufficiale) che std::chrono::system_clock::time_point
ha un'epoca coerente con Unix Time. Questa è definita come la durata che è trascorsa dalle 00:00:00 Coordinated Universal Time (UTC), giovedì 1 gennaio 1970, senza contare i secondi bisestili.
Fwiw, here is a date/time library che sfrutta questo standard de facto.
Non esiste uno standard de facto per gli altri due orologi specificati nello standard. Inoltre, high_resolution_clock
può essere un alias di tipo per system_clock
o steady_clock
.
Su OS X, high_resolution_clock
è un tipo alias per steady_clock
, e steady_clock
è un conteggio di nanosecondi dal momento che il computer avviato (nessun rapporto di sorta per UTC).
Per il futuro lettori: hai una lista di link alla documentazione ufficiale dove potresti verificare se questo è ancora vero? – MikeMB
Ecco tutti i documenti del C++: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/ Tra questi documenti ci saranno bozze dello standard C++ che contiene le specifiche ufficiali per '
Grazie mille, avrei dovuto essere più preciso: I significava se c'è qualche documentazione sul comportamento de facto delle diverse implementazioni di libreria standard riguardo a 'std :: chrono :: system_clock'. Ciò eviterebbe la necessità di scrivere attivazioni specifiche della piattaforma per verificare tale comportamento. – MikeMB
'epoch' in generale rappresenta il punto di partenza di un orologio. C'è più di un orologio in 'C++ 11 chrono'. – bolov
http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch – SChepurin
Questo articolo spiega questo: http://www.informit.com/articles/article.aspx?p=1881386&seqNum=2 – newbie