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;
L'uscita di questo è "timbro tempo è 2009-ago-17 16:00: 00.500000 "sulla mia macchina Linux.
fonte
2010-02-10 00:28:43
Sei sicuro di aver bisogno di un doppio? Penso che si adatti a un int. – slipbull
Sì, ho bisogno di doppio - è una parte di un'interfaccia che non posso cambiare. Se è un numero di secondi, non è possibile acquisire la parte frazionale ... e http://xkcd.com/607/ :-) – cube