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.

È stato utile?

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

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top