2016-05-06 7 views
0

Ich habe dieses Stück Code, der in Frankfurt auf einer Maschine ausführt:boost :: day_clock local_day() conundrum

//hardcoding for simplicity but these get passed 
    int year = 2016; 
    int month = 05; 
    int day = 6;   

    boost::gregorian::date gdToday (boost::gregorian::day_clock::local_day()); 
    LOG(DEBUG, 0) << " today=" << gdToday; 

    if (boost::gregorian::date(year, month, day) > gdToday) 
    { 
     // log 
     return; 
    } 

In meinem log, ich sehe dies: 2016-05-06 02:40 : 40.479057 | DEBUG | today = 2016-Mai-05

Ich weiß, dass der Log-Zeitstempel in UTC ist. Ich nehme an, dass day_clock :: local_day() mir die MESZ Zeit gibt.

So 2016-05-06 02:40 UTC wird 2016-05-06 04:40 sein. Aber warum gibt mir GdToday noch 2016-Mai-05? Aus diesem Grund schlägt der If-Vergleich fehl.

Ich habe versucht, den Boost-Doc zu lesen, aber immer noch nicht viel Ahnung. Könnte es sein boost :: gregorian :: date :: operator < <. Ich denke nicht, dass die Verwendung von day_clock :: universal_day() auch nützlich wäre.

Irgendwelche Hinweise oder Ideen? Danke !!

+0

Das ist ein bisschen albern. Jetzt macht der Schnitt die Antwort (meistens) ungültig, aber die Frage ist immer noch ein einfacher "Tippfehler" ("thinko", wenn du willst). Ich stimme zu schließen dann – sehe

Antwort

1

Interessant. Wir können nichts sehen, ohne natürlich Locales und Zeitzonen zu kennen. Deine Annahme schneidet es nicht ab.

auf einem Bein Ausgehen, weil Sie nicht tun tatsächlich zeigen, wie Sie die local_day im Protokoll angezeigt bekommen, konnte ich theoretisieren, dass Sie versehentlich den Tag in einem Formatierer anstatt mit einem faulen Schauspieler (alle Schub fest einprogrammiert Formatierer sind faule Akteure, die bei der Formatierung der Protokollnachrichten aufgerufen werden.

Dies würde bedeuten, dass es nie zum nächsten Tag fortschreitet, es sei denn, Ihr Format wird neu initialisiert (z. B. Prozessneustart).

+1

Danke sehe. Eigentlich war es eine dumme Aufsicht. Die Maschine, die diesen Code ausführt, befindet sich in Chicago. Daher wird der Unterschied erwartet. Vielen Dank für Ihre schnelle Hilfe !! – user2930006