unix timestamp per aumentare :: :: posix_time ptime
-
19-09-2019 - |
Domanda
Ho bisogno di convertire doppia con numero di secondi da epoch ptime
. Sono prety sicuro che ci deve essere un modo semplice per fare questo, ma non ho trovato nulla. Grazie.
Modifica: Il timestamp originale è in virgola mobile. Non posso cambiare e io non voglio perdere il sub-secondo di precisione.
Soluzione 3
dopo un po 'armeggiare intorno mi si avvicinò con questo:
ptime(date(1970, 1, 1), time_duration(0, 0, 0, time_duration::ticks_per_second() * 1234567890.0987654321))
Non sono sicuro che questa è la soluzione migliore, ma sembra di fare ciò che ho bisogno.
Altri suggerimenti
Con la conversione from_time_t()
funzione. Un time_t
è timestamp, cioè il numero di secondi da epoch.
Per una macchina che ha la data spinta / ora compilato al livello predefinito di risoluzione microsecondo, provate questo:
double ts = 1250524800.5;
// Use floor() here if seconds are always positive.
time_t secondsSinceEpoch = floor(ts);
long microsecondsSinceSecond =
floor((ts - static_cast<double>(secondsSinceEpoch)) * 1000000);
boost::posix_time::ptime result =
boost::posix_time::from_time_t(secondsSinceEpoch);
boost::posix_time::time_duration fractionalSeconds(0, 0, 0,
microsecondsSinceSecond);
result += fractionalSeconds;
cout << "Time stamp is " << result << endl;
Il risultato di questo è "timbro tempo è 2009-ago-17 16: 00: 00,500000" sulla mia macchina linux
.