Ich frage mich, ob jemand eine gute Datums- und Zeitbibliothek kennt, die Funktionen wie das Folgende richtig implementiert hat:
Ich verwende derzeit Python, obwohl ich froh bin, eine Lösung in einer anderen Sprache wie Perl, C oder C ++ zu haben.
Ich habe festgestellt, dass die integrierten Python-Bibliotheken mit ihrer Sommerzeit-Logik nicht ausgereift sind, und es gibt für mich keine offensichtliche Möglichkeit, Dinge wie benutzerdefinierte Zeitbereiche einzurichten.
Das Modul datetime
von Python ist standardmäßig auf nicht kontroverse Aspekte beschränkt, die sich nicht ständig durch legislative Fiat ändern - deshalb wird die direkte Unterstützung von Zeitzonen, DST, Fuzzy-Parsing und schlecht definierter Arithmetik bewusst ausgeschlossen (wie "einen Monat später" ...) und dergleichen. Darüber hinaus dateutil für viele Arten von Manipulationen und für Zeitzonen (einschließlich DST-Ausgaben), füge das meiste hinzu, was du verlangst, wenn auch nicht extrem explosive Dinge wie" Ferien ", die so wild variieren, nicht nur über politische Jurisdiktionen hinweg Aber auch über Arbeitgeber innerhalb einer einfachen Jurisdiktion (zB in den USA halten manche Arbeitgeber "Columbus Day" für einen Feiertag, aber viele nicht - und einige, mit Büros an vielen Orten, haben es als Urlaub an einigen Orten, aber nicht in andere, angesichts dieses totalen, totalen Chaos, zu erwarten, eine universelle Bibliothek zu finden, die irgendwie magisch Sinn macht, ist ziemlich komisch).
Ich sollte eine Zeitzone angeben können wie "US / Eastern" und es sollte sein schlau genug, um zu wissen, ob es gegeben ist Zeitstempel sollte EST oder entsprechen EDT.
Dieser Teil ist nicht immer möglich - genau wie 2:30 Uhr für einen Tag des Jahres nicht existiert (in Zeitzonen mit Sommerzeit, die um 2:00 Uhr wechselt), 2:30 Uhr existiert zweimal für einen anderen Tag - einmal in EDT und dann eine Stunde später in EST. Wenn du dieses Datum / diese Uhrzeit an die Bibliothek übermittelst, woher weiß es dann, von welchem der beiden Male du sprichst?
Obwohl das Buch über zehn Jahre alt ist, würde ich Ihnen wärmstens empfehlen, Standard C Datum / Zeit-Bibliothek: Programmierung zu lesen die Weltkalender und -uhren von Lance Latham. Dies ist eines jener Bücher, die Sie von Zeit zu Zeit in Erstaunen setzen, dass es überhaupt geschrieben wurde. Der Autor geht detaillierter auf Kalender und Zeiterfassungssysteme ein und entwickelt den Quellcode zu einer Bibliothek (in C geschrieben), um alle Berechnungen zu verarbeiten.
Erstaunlicherweise scheint es immer noch gedruckt zu sein ...
Ich habe gerade eine Python-Bibliothek mit dem Namen Fleming ( Ссылка ) veröffentlicht, und sie scheint zwei Ihrer Probleme in Bezug auf Raffinesse zu lösen zur Sommerzeit.
Problem 1, Arithmetisch - Fleming hat eine add_timedelta-Funktion, die ein timedelta (aus Pythons datetime-Modul) oder ein relatives delta von python-dateutil nimmt und es einem datetime-Objekt hinzufügt. Die Funktion add_timedelta behandelt den Fall, wenn das Datetime-Objekt eine DST-Grenze überschreitet. Eine vollständige Erklärung und Beispiele finden Sie Ссылка . Hier ist ein kurzes Beispiel:
%Vor%Problem 2, Natural Boundary Alignment - Fleming hat eine Bodenfunktion, die eine beliebige Ausrichtung annehmen kann. Nehmen wir an, Ihre Zeit war Datetime (2013, 2, 3) und Sie gaben ihm ein Floor-Intervall von Monat = 3. Dies bedeutet, dass es auf das nächste Trimonth (Viertel) gerundet wird. Sie könnten auch die nächste Dekade angeben, indem Sie in den Argumenten year = 10 verwenden. Check-out ( Ссылка ) für vollständige Beispiele und Illustrationen. Hier ist eine kurze:
%Vor%