boost: holt die aktuelle local_date_time mit der aktuellen Zeitzone vom Rechner

9

Das Problem ist:

  • Ich weiß, wie man die lokale Zeit in Boost bekommt

der Code:

%Vor%
  • Ich weiß, wie man die aktuellen Zeitzonendaten von der Maschine holt (ich hoffe, es ist ein richtiger Weg)

der Code:

%Vor%

aber ich kann noch nicht local_date_time mit der aktuellen time_zone bekommen ... Weiß jemand, wie es geht?

    
Alek86 05.01.2012, 17:27
quelle

3 Antworten

2

OK, für den Moment weiß ich immer noch nicht die ganze Antwort

aber es gibt einen Code, der beim Drucken des aktuellen Zeitzonen-Offsets helfen könnte

(basierend auf einer Antwort für eine verwandte Frage hier (stackoverflow) und einigen inneren Boost-Code)

Ich bin mir absolut nicht sicher, ob es auf allen Rechnern richtig funktioniert, aber jetzt ist es besser als nichts:

%Vor%     
Alek86 05.01.2012 21:58
quelle
1

Da Sie sagen, dass Sie Zeitzoneninformationen haben, ist die einzige Frage, wie Sie Boost für die Formatierung verwenden, die Sie benötigen. Unten ist ein Beispielcode:

%Vor%

Bei diesem Ansatz ist der Posix-Zeitzonen-String der problematischste Teil. Ich denke, es sollte Datenbanken mit diesen Zeichenfolgen für jede Zeitzone geben und Boost bietet eine Vorlage für die Arbeit mit .csv-Datei. Wenn das einzige, was Sie brauchen, ist Offset in der Zeichenfolge nur DTS auf 0:00:00 und kümmern sich nicht um den Rest. Verwenden Sie zum Beispiel diese Zeichenfolge: PST-5:30PDT0,0,365 (für immer PDT, Shift 0). Ersetzen Sie "-5: 00" durch den benötigten Offset.

Allerdings würde C ++ / boost way seinen eigenen Zeitzonenanbieter implementieren, indem er von date_time::time_zone_base .

Weitere Beispiele und Ideen finden Sie hier .

    
real4x 06.01.2012 07:40
quelle
0

Wenn Sie also auch den korrekten UTC-Offset erhalten müssen, sollte mein vorheriges Beispiel ein wenig modifiziert werden, um den korrekten Zeitzonen-String zu erzeugen:

%Vor%

Eine andere Lösung besteht darin, einen ganz neuen Zeitzonenanbieter zu schreiben. Wie dieser einfache:

%Vor%

Übergeben Sie es einfach, wenn Sie local_date_time :

konstruieren %Vor%     
real4x 08.01.2012 03:00
quelle