In welchen Sprachen sind Datum, Uhrzeit und Kalender wirklich gut?

8

Das ist wahrscheinlich zu viel verlangt, aber gibt es irgendeine Sprache, die eine wirklich großartige Arbeit bei der Darstellung von Zeit- und Datumsoperationen leistet? Ich gebe sofort zu, dass es wirklich schwer ist, eine wirklich großartige Zeitbibliothek zu schreiben. Das heißt, gibt es irgendwelche weit verbreiteten Sprachen, die eine haben? Im Grunde möchte ich etwas, das Zeit und Datum so umfassend behandelt wie moderne reguläre Ausdrucksbibliotheken ihre Aufgaben erledigen. Alles, was ich bisher in Python und Java gesehen habe, lässt ein oder mehrere ziemlich wichtige Stücke aus oder macht zu viele Dinge schwierig.

Zumindest sollte dies intuitiv zu tun sein:

  • finde die Anzahl der Tage zwischen zwei gegebenen Daten, die Anzahl der Minuten zwischen zwei vorgegebenen Minuten, usw.
  • addiert und subtrahiert Intervalle von Zeitstempeln
  • ermöglicht eine einfache Konvertierung zwischen Zeitzonen, wobei die Änderungen der Sommerzeit automatisch nach Region berücksichtigt werden (vorausgesetzt, es gibt eine genaue unterstützende Datenbank mit regionalen Einstellungen)
  • Ermittelt den Zeitraum, in dem ein bestimmter Zeitstempel liegt, mit der gegebenen Granularität ("welcher Kalendertag ist dieses Datum?")
  • unterstützt sehr allgemeine String-to-Date-Conversions (bei einem Muster)

Außerdem sollte die allgemeine Kalender-Klasse Unterklassen entsprechen, wenn ich einen eigenen hebräischen, babylonischen, Tolkien- oder Marsianerkalender rollen muss. (Java-Kalender machen dies zum Beispiel sinnlos schwer.)

Ich bin hier völlig sprachunabhängig. Es ist in Ordnung, wenn das Ding bei der Berechnung mehrdeutiger Dinge wie "Wie viele Minuten gibt es zwischen 2002 und dem nächsten Valentinstag?" Erstickt.

    
Motti 18.09.2008, 05:33
quelle

15 Antworten

7

Wie wäre es mit .NETs DateTime ? (Sie können Ihre Sprache im Rahmen auswählen)

    
Eugene Yokota 18.09.2008 05:37
quelle
4

Suchen Sie etwas wie PHP strtotime ? Das gibt Ihnen den Unix-Zeitstempel von fast allem, was Sie darauf werfen können.

Von der PHP-Seite:

%Vor%

Die Date-Klassen von .NET erfordern viel mehr arkanes Rumhängen mit DateTimeFormatInfo und dem Ich mag es, Datums-Strings zu analysieren, die nicht annähernd so kompliziert sind wie strtotime.

PHP bietet eine DateTime-Klasse und eine DateTimeZone-Klasse wie PHP 5, aber sie sind beide ziemlich schlecht dokumentiert. Ich verwende immer noch meistens Unix-Zeitstempel und das Datum , time und strtotime funktioniert, da ich mich mit den neuen Objekten noch nicht richtig auseinandergesetzt habe.

Die folgenden Links versuchen, DateTime und DateTimeZone etwas besser zu gestalten:

Shabbyrobe 18.09.2008 05:41
quelle
3

Für Java empfehle ich dringend die Joda Date / Time-Bibliothek .

    
MetroidFan2002 18.09.2008 05:51
quelle
3

Sie können das Datum :: Manip überprüfen Perl-Modul auf CPAN.

    
zoul 18.09.2008 05:53
quelle
3

Es gibt eine wirklich coole Programmiersprache namens Frink . Es unterstützt so ziemlich jede Einheit, die jemals erfunden wurde, jede physikalische oder mathematische Konstante, Zeitzonen, bla bla bla ...

Es hat sogar eine Weboberfläche und eine Java Applet .

Einige Ihrer Herausforderungen oben:

  • finde die Anzahl der Tage zwischen zwei gegebenen Daten, die Anzahl der Minuten zwischen zwei gegebenen Minuten, usw.
    • Wie viele Tage bis Weihnachten: # 2008-12-25 # - now[] -> days
    • Wie lange seit Mittag: now[] - # 12:00 # -> minutes
  • addiert und subtrahiert Intervalle von Zeitstempeln
    • Wann war meine Million Minuten Geburtstag: # 1979-01-06 # + 1 million minutes
  • ermöglicht eine einfache Konvertierung zwischen Zeitzonen, wobei die Änderungen der Sommerzeit automatisch nach Region berücksichtigt werden (vorausgesetzt, es gibt eine genaue unterstützende Datenbank mit regionalen Einstellungen)
    • Wann begannen die Olympischen Spiele in Peking: # 2008-08-08 08:08 PM China # -> London
  • unterstützt sehr allgemeine String-to-Date-Conversions (bei einem Muster)
    1. Definieren Sie ein neues Datumsformat: ### dd.MM.yyyy ###
    2. Parse: # 18.09.2008 #

Frink lässt sich gut mit Java integrieren: Es kann in Java-Anwendungen eingebettet werden und Frink-Programme können Rufe Java-Code .

    
Jörg W Mittag 18.09.2008 13:32
quelle
2

Ich mag .NET dafür. Es bietet eine gute Date / Time-Manipulation mit den Klassen DateTime und Timespan. Das meiste Datum / Zeit ist jedoch ziemlich einfach in jeder Sprache, was Ihnen einen Unix-Zeitstempel gibt, mit dem Sie arbeiten können.

    
J D OConal 18.09.2008 05:36
quelle
2

PHP ist nicht halb so schlimm.

%Vor%

Ihr müsst ein paar Lobeshymnen dafür haben, eine Funktion zu haben, um zu sagen, welches Datum Ostern ist Jahr .

    
nickf 18.09.2008 06:00
quelle
2

Für C ++ gibt es Boost.Date_Time .

    
KTC 18.09.2008 06:07
quelle
1

Ich stimme zu, dass Java SDK eine schreckliche Implementierung der Datetime-Bibliothek hat. Hoffentlich wird JSR-310 dieses Problem in Java 7 beheben. Wenn Sie nicht auf Java 7 warten können, würde ich den Vorgänger von JSR-310, Joda Time, empfehlen.

Ich stimme zu, dass die Implementierung von Ruby on Rails in ActiveSupport eine ausgezeichnete Implementierung ist, die die Grundlagen richtig macht.

    
Alan 18.09.2008 05:47
quelle
1

Ich war ziemlich glücklich mit der PEAR Date Klasse für PHP. Es tut alles, was Sie fragen, glaube ich, mit Ausnahme von mehreren Kalendern, obwohl es auch Date_Human gibt, was eine Vorlage für diese Art von Sache sein könnte.

Ich habe auch noch nicht damit gearbeitet, aber Zend_Date , auch für PHP, sieht aus wie es gut für die meisten von dem, was Sie wollen, funktioniert. Zend_Date hat den Vorteil, dass es auf Unix-Zeitstempeln basiert und dass der Großteil der Zend Framework-Klassen einfach zu erweitern ist. Am ehesten könntest du schnell Unterstützung für deine anderen Datensysteme hinzufügen, indem du Zend_Date erweiterst.

    
Michael Johnson 18.09.2008 13:54
quelle
1

Perls DateTime-Bibliothek ist ohne Zweifel die beste (wie in den meisten Fällen korrekte) Bibliothek für die Behandlung von Datums- und Uhrzeit-Berechnungen und Zeitzonen. Alles andere ist in unterschiedlichem Maße falsch. (und ich sage, dass dies den oben genannten Blogeintrag in den DateTime / DateTimeZone-Bibliotheken von PHP geschrieben hat)

    
kellan 01.01.2009 01:58
quelle
1

Mein persönlicher Favorit wäre Ruby mit ActiveSupport von Rails.

%Vor%

Es unterstützt alle oben genannten Funktionen mit einer ähnlichen DSL (domänenspezifischen Sprache)

    
Redbeard 18.09.2008 05:41
quelle
1

PHP Date Funktion ist fantastisch und hat viele nützliche Funktionen (Link: php.net/date )

.NET ist nicht schlecht in den neuesten Versionen und ich mag die Tatsache, dass Sie einen Verweis auf eine sekundäre Sprache hinzufügen und den Code in Ihrem Projekt mischen und abgleichen können. So könnten Sie C # - und VB-Funktionen innerhalb derselben Klasse verwenden.

    
Andrew 05.03.2009 11:46
quelle
0

Nebenbei: Ich frage mich, welche Art von Datumsdatentypen in Bereichen wie Archäologie verwendet werden! Wie stellt man historische Daten für ein Zeitlinien-Applet dar?

    
Agnel Kurian 18.09.2008 05:47
quelle
0

Ruby hat tatsächlich eine ausgezeichnete Unterstützung. Besuche diese Seite . Wirklich großartige Unterstützung, um Strings in Dates zu verwandeln, in Strings zu mixen, Mathe auf Dates zu schreiben, "natürliche Sprache" Strings wie "vor 3 Monaten diesen Freitag um 15:45" in ein aktuelles Datum zu zerlegen, Daten in Strings zu verwandeln, so dass man Sachen machen kann wie "Sam hat sich zuletzt vor 4 Tagen angemeldet" oder was auch immer ...

Sehr geschickt.

    
Cody Hatch 18.09.2008 05:49
quelle