Voll funktionsfähige Datums- und Zeitbibliothek

7

Ich frage mich, ob jemand eine gute Datums- und Zeitbibliothek kennt, die Funktionen wie das Folgende richtig implementiert hat:

  • Mikrosekundenauflösung
  • Sommerzeit
    • Beispiel: es weiß, dass es am 8. März 2009 in den USA keine 2:30 Uhr für Zeitzonen gab, die die Sommerzeit berücksichtigen.
    • Ich sollte in der Lage sein, eine Zeitzone wie "US / Eastern" anzugeben und es sollte intelligent genug sein, um zu wissen, ob ein bestimmter Zeitstempel EST oder EDT entsprechen sollte.
  • Benutzerdefinierte Datumsbereiche
    • Die Möglichkeit, spezielle Geschäftskalender zu erstellen, die Wochenenden und Feiertage überspringen.
  • Benutzerdefinierte Zeitbereiche
    • Die Möglichkeit, Geschäftszeiten so zu definieren, dass außerhalb der Geschäftszeiten angeforderte Zeiten auf die nächste oder vorherige gültige Stunde auf- oder abgerundet werden können.
  • Arithmetik
    • Sie können ganzzahlige Beträge aller Einheiten hinzufügen und subtrahieren (Jahre, Monate, Wochen, Tage, Stunden, Minuten, ...). Beachten Sie, dass das Hinzufügen von etwa 0,5 Tagen nicht gut definiert ist, da dies 12 Stunden bedeuten kann oder die Hälfte der Dauer eines Tages bedeuten kann (bei Änderungen der Sommerzeit ist das nicht 24 Stunden).
  • Natürliche Kantenausrichtung
    • Wenn ich einen Zeitstempel habe, würde ich gerne in der Lage sein, Dinge wie das nächste Jahrzehnt, Jahr, Monat, Woche, ..., Viertelstunde, Stunde usw. abzurunden.

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.

    
Mr Fooz 18.09.2009, 02:00
quelle

6 Antworten

6

Sehen Sie sich das Datum und möglicherweise mx.DateTime Pakete.

    
mhawke 18.09.2009 02:19
quelle
6

Sah das neulich, ich habe es selbst nicht benutzt ... sieht vielversprechend aus. Ссылка

    
rpq 04.06.2013 01:25
quelle
4
  

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?

    
caf 18.09.2009 04:04
quelle
2

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 ...

    
RBerteig 18.09.2009 08:50
quelle
1

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%     
Wes Kendall 08.02.2014 07:59
quelle

Tags und Links