Wenn ich date +%H-%M-%S
auf der Kommandozeile (Debian/Lenny) zu tun, erhalte ich eine benutzerfreundliche (nicht UTC, nicht DST-less, die Zeit, eine normale Person auf ihrer Armbanduhr hat) Zeit gedruckt.Einfachste Möglichkeit, aktuelle Zeit in der aktuellen Zeitzone mit boost :: date_time zu erhalten?
Was ist der einfachste Weg, um die gleiche Sache mit boost::date_time
zu erhalten?
Wenn ich dies tun:
std::ostringstream msg;
boost::local_time::local_date_time t =
boost::local_time::local_sec_clock::local_time(
boost::local_time::time_zone_ptr()
);
boost::local_time::local_time_facet* lf(
new boost::local_time::local_time_facet("%H-%M-%S")
);
msg.imbue(std::locale(msg.getloc(),lf));
msg << t;
Dann msg.str()
eine Stunde früher als die Zeit, die ich sehen will. Ich bin mir nicht sicher, ob dies ist, weil es UTC oder lokale Zeitzonezeit ohne eine DST-Korrektur zeigt (ich bin in Großbritannien).
Was ist der einfachste Weg, um die oben zu ändern die DST lokale Zeitzone Zeit korrigiert zu erhalten? Ich habe eine Idee, es beinhaltet boost::date_time:: c_local_adjustor
, aber kann es nicht aus den Beispielen herausfinden.
Ich glaube, dies ist ein Duplikat http://stackoverflow.com/questions/2492775/get-local-time-with-boost/2493977 ist. Kurzversion: Verwenden Sie 'boost :: posix_time', um ein Zeitobjekt aus der Systemuhr zu konstruieren. Dies funktioniert gut für die lokale Zeit (das 'C' locale). Ob Sie Zeiten für andere Zeitzonen erstellen können, hängt davon ab, welche Gebietsschemas Ihnen zur Verfügung stehen. – Nate
Danke für den Zeiger; Grundlegendes Problem ist, dass ich den Unterschied zwischen local_time/posix_time nicht wirklich geschätzt habe. – timday