Ich habe eine Client-Java-Bibliothek, die ISO-Zeitstempel mit Zeitzone mit Joda-Time-Bibliothek analysiert und einen langen Wert (Millisekunden seit Epoche in UTC) zurückgibt. Ich muss ein serverseitiges Framework (in C++) entwickeln, das Millisekunden seit der Epoche verwendet und Zeitstempel in einer beliebigen Zeitzone erzeugt (z. B. "Europa/Zürich"). Ich kann local_date_time Option wie folgt verwenden:Konvertieren Zeitstempel in Millisekunden in eine Zeitzone in Boost
posix_time ptime = epoch(date(1970,1,1)) + ms; //ms sent from client
tz_database tz;
tz.load_from_file(/*path to date_time_zonespec.csv*/);
time_zone_ptr ptr = tz.time_zone_from_region(regionStr); //regionStr = Europe/Zurich
local_date_time mytime(ptime, ptr);
Allerdings habe ich von diesem Posten gelernt (C++: Will you choose boost::date_time or icu::date/time library?), dass boost :: date_time Zeitzonen-Unterstützung ist gebrochen. Eine bessere Option ist boost :: locale. Gibt es einen Weg zu den gleichen Schritten wie oben mit boost :: locale? Ich suchte online nach Beispielen mit boost :: Locale, konnte aber kein ähnliches Beispiel finden.
Vielen Dank für Ihre Antwort. Leider kann ich C++ 11/14 nicht verwenden, da dafür die vorhandene Codebasis portiert werden muss. –
@SantanuC: Fair genug, und meine Sympathien über Sie auf C++ 98/03 stecken. :-) –