Ich erzeuge zwei Sätze sich wiederholender Ereignisse in separaten Schleifeniterationen, habe aber einen Konflikt, wenn ich die generierten Ergebnisse für Konflikte vergleiche. Dies scheint zu sein, wenn die Zeiten rückwärts gehen und ich unsicher bin, wie ich das lösen soll?
Das erste Wiederholungsereignis wird:
Das zweite Wiederholungsereignis wird:
Um die Ereignisse zu generieren, gehe ich jeden Tag in der lokalen Zeitzone "Europe / Stockholm" mit Nodatime durch:
%Vor%Mein Problem tritt am 29./30. Oktober 2016 auf Wenn die Uhren rückwärts laufen und die zweite Regel mit der ersten in Konflikt steht. Ссылка
Die Konfliktzeiten sind wie folgt:
Ich verwende einen Algorithmus wie diesen, um auf Konflikte zu testen Ссылка
Wie soll ich mit diesen zeitversetzten Konflikten umgehen?
Obwohl es wirklich helfen würde, wenn Sie die Frage klären, werde ich jetzt ein paar Annahmen machen. Ich kann die Frage später bei Bedarf bearbeiten.
Was Sie wahrscheinlich tun möchten, ist ungefähr so:
%Vor% Die SchedulingResolver
-Implementierung ist hier und ist nur erforderlich, wenn Sie die 1.x-Version von Noda verwenden Zeit. Wenn Sie 2.x verwenden, können Sie stattdessen InZoneLeniently(tz)
verwenden, da sich das Verhalten des toleranten Resolvers in 2.x geändert hat (siehe "Änderungen des toleranten Resolvers" in 2.x Migrationshandbuch ).
Die wichtigsten Punkte sind:
ZonedDateTime
wird oft am besten als Vermittler verwendet.
Sie haben tägliche Ereignisse, die auf dem lokalen Tag basieren, also ist LocalDate
geeigneter.
Wenn Sie Ereignisse basierend auf einer festen 24-Stunden-Rotation (alias der UTC-Tag) hatten, wäre Instant
geeigneter.
Resolver werden verwendet, um mehrdeutige oder ungültige LocalDateTime
-Werte zurück zu bestimmten Zeitpunkten zu mappen. Der Resolver, den ich für die Planung empfehle, ist der, der:
Wie Jon schon erwähnt hat - Ihre Bedürfnisse können variieren, und wir können wirklich nicht antworten, was Sie tun sollten . Es gibt in der Tat Geschäfte, die andere Resolver-Regeln als die, die ich empfehle, benötigen.
Tags und Links c# datetime globalization timezone nodatime