Finden Sie Ihre Anzahl Von Engel Heraus
Arbeiten mit Daten und Zeiten in Ihrer Anwendung
Ich bin jetzt seit ungefähr sechs Jahren ein professioneller Entwickler. In diesen sechs Jahren habe ich nie für ein Unternehmen oder ein Projekt gearbeitet, das in irgendeiner Form nicht mit Datums- und Zeitproblemen zu kämpfen hatte.
Nahezu jede Anwendung, an der Sie arbeiten, erfordert in irgendeiner Weise Zeit, was bedeutet, dass Sie irgendwann Daten oder Zeiten erfassen, speichern, abrufen und anzeigen müssen. Es gibt keine Silberkugel für den Umgang mit Datums- oder Uhrzeitangaben und Sie können sich niemals der Komplexität entziehen, die mit unserem Zeitkonzept verbunden ist, aber Sie können Schritte unternehmen, um es weniger schmerzhaft zu machen.
In den Jahren, in denen ich mit der Zeit in verschiedenen Programmiersprachen gearbeitet habe, habe ich festgestellt, dass das folgende Wissen einen langen Weg zurücklegt.
Auswahl des richtigen Datenformats
Der erste Schritt bei der Arbeit mit Zeiten und Daten besteht darin, eine Darstellung für Ihre Daten auszuwählen. Während verschiedene Formate mehr oder weniger gleich erscheinen, hat das von Ihnen gewählte Format einen großen Einfluss darauf, wie Sie Ihren Code schreiben und debuggen.
Wenn Sie einen numerischen Zeitstempel verwenden, wenn Sie ein Datum benötigen, müssen Sie den Datumszeitstempel analysieren und das Datum daraus abrufen. Dies kann je nach Zeitzone unkompliziert sein oder auch nicht.
spirituelle Bedeutung von 1616
Die Verwendung einer benutzerdefinierten Zeichenfolge zur Darstellung eines Zeitraums scheint einfach zu speichern und zu bearbeiten, ist jedoch schwierig abzufragen. Darüber hinaus wird die Verwendung von Darstellungen, die für das menschliche Auge nicht sofort erkennbar sind, das Debuggen Ihres Codes erschweren.
Bei der Auswahl eines Formats für Datum oder Uhrzeit halte ich mich an folgende Regeln:
- Verwenden Sie niemals numerische Zeitstempel. Sie sind häufig am einfachsten in Standardbibliotheken unter verschiedenen Programmiersprachen zu finden, aber nicht für Menschen lesbar und die Versuchung, sie zu manipulieren, ist zu groß.
- Halten Sie sich an ISO 8601 , ein Standard, der ein Format für datums- und zeitbezogene Daten definiert. Es ist trivial, eine Bibliothek für jede Sprache zu finden, die mit den Variationen von ISO 8601 umgehen kann.
- ISO 8601 ist ein Standard, weist jedoch viele Variationen auf. Sie sollten immer die am besten lesbare Variante von ISO 8601 wählen. Dies erfordert keinen zusätzlichen Aufwand, erleichtert jedoch das Debuggen.
- Ihre Zeitstempelzeichenfolge sollte nur Daten enthalten, die Sie unbedingt benötigen. Wenn Sie mit Zeiten arbeiten, sollte Ihre Zeichenfolge kein Datum enthalten, und wenn Sie mit einem Datum arbeiten, das zeitzonenunabhängig ist, sollte Ihre Zeichenfolge keine Zeitzone enthalten. Durch das Hinzufügen zusätzlicher Informationen wird der Analysevorgang und die Absicht der Daten für zukünftige Entwickler mehrdeutig
- Wenn Sie Zeitzonen speichern, normalisieren Sie in Ihren Zeitstempeln immer auf dieselbe Zeitzone. Dies erleichtert nicht nur einem Computer das Sortieren und Verarbeiten der Daten, sondern auch einem menschlichen Entwickler.
Die Einhaltung dieser Regeln kostet Sie im Voraus nicht viel, erleichtert Ihnen jedoch das Leben, wenn Ihre Anwendung erstellt wird und Sie feststellen, dass Ihre Verwendung von Zeiten und Daten nicht Ihren Erwartungen entspricht.
Das richtige Werkzeug auswählen
Wie bei den meisten Problemen in unserer Branche kommt es bei der Handhabung von Uhrzeit und Datum darauf an, das richtige Werkzeug für den Job auszuwählen.
Es ist verlockend, die Tools in der Standardbibliothek Ihrer Lieblingssprache zu verwenden, aber das ist möglicherweise nicht die beste Wahl. Während einige Standardbibliotheken fantastische Datums- und Zeitfunktionen haben (Python), sind andere geradezu erbärmlich (Javascript). Die Verwendung des falschen Tools erschwert die zeitliche Entwicklung von Funktionen erheblich und erleichtert das Eindringen von Fehlern in Ihre Anwendung.
Mit einer guten Bibliothek für den Umgang mit Datum und Uhrzeit können Sie die oben genannten 5 Regeln befolgen. Insbesondere sollte es in der Lage sein:
- Analysieren Sie alle Datumsangaben, auf die Sie möglicherweise stoßen (einschließlich externer Darstellungen).
- Ausgabe an eine beliebige Datumsdarstellung, die Sie möglicherweise benötigen (einschließlich externer Darstellungen).
- Bearbeiten Sie Datums- und Uhrzeitangaben, indem Sie Zeiteinheiten hinzufügen oder von diesen abziehen.
- Vergleichen Sie Datum und Uhrzeit.
- Richtig zwischen Zeitzonen konvertieren.
Es ist wichtig, dass Ihre Bibliothek diese Funktionen unterstützt. Andernfalls ist die Versuchung zu groß, die Funktionalität selbst zu implementieren. Und um ganz klar zu sein, wenn Sie versuchen, eine dieser Funktionen selbst zu implementieren, werden Sie scheitern.
Analysieren Sie Ihre eigenen Zeitstempel nicht mit regulären Ausdrücken, fügen Sie einem numerischen Zeitstempel keine Sekunden hinzu, da dies wie eine normale Zahl erscheint, und vergleichen Sie Datum und Uhrzeit nicht mit dem Gleichheitsoperator. Diese Bibliotheken existieren, weil diese Probleme schwer zu lösen sind und die Neuerfindung des Rads in Ihrer Anwendung nur zu einem kaputten Rad führt.
Im Folgenden habe ich einige Vorschläge für Bibliotheken, die diese Kriterien erfüllen:
Sprache | Bibliothek |
Python | Standardbibliothek |
Javascript | Moment und Moment Zeitzone |
Java 8 und höher | Standardbibliothek (java.time) |
Java 7 und niedriger | Joda-Zeit |
Schnell | SwiftDate |
Wenn Ihre Sprache nicht aufgeführt ist (weil ich nicht genug damit vertraut bin), suchen Sie einfach nach Datums- und Zeitbibliothek. Wahrscheinlich finden Sie eine gute Bibliothek, die alles bietet, was Sie brauchen.
Zeit kennen
Das letzte Wissen, das ich teilen muss, ist nicht spezifisch für die Arbeit mit Datums- und Uhrzeitangaben, sondern eher eine allgemeine Philosophie, um Probleme zu vermeiden. Es gilt für die Datums- und Uhrzeitbehandlung ebenso wie für jedes andere Problem bei der Programmierung .
Überprüfen Sie immer Ihre Annahmen.
Wir nähern uns jedem Problem mit einem großen Wissensbestand und noch größeren Annahmen. Beim Umgang mit Datum und Uhrzeit ist es wichtiger denn je, Ihre Annahmen zu überprüfen, um sicherzustellen, dass sie weiterhin für Ihr Szenario gelten.
Diese Liste Der Titel 'Falsehoods Programmers Believe About Time' enthält viele hervorragende Beispiele, die veranschaulichen, dass Zeit wahrscheinlich nicht das ist, was Sie gedacht haben. Wenn Sie eine Funktion entwerfen oder entwickeln, die sich um die Zeit dreht, empfehle ich Ihnen, einen Partner zu suchen und diese Liste durchzugehen, um sicherzustellen, dass Sie die aufgeführten Fallstricke vermieden haben.
Zeitfehler sind bekanntermaßen schwer zu erkennen und noch schwieriger zu testen. Wenn Sie unter Berücksichtigung dieser Liste entwickeln, können Sie möglicherweise subtile Fehler vermeiden, die Ihre Kunden betreffen, die sie jedoch möglicherweise nicht abfangen (die schlimmste Art von Fehler!).
Zeitzonen
Ohne Diskussion der Zeitzonen wäre keine Diskussion über Zeiten oder Daten vollständig. Machen Sie sich nicht nur mit den oben aufgeführten häufigen Unwahrheiten vertraut, sondern auch mit den Grundlagen der Zeitzonen.
Zeitzonen sind durchweg ein Schmerzpunkt bei der Arbeit mit der Zeit, selbst wenn Sie denken, dass Sie sie „alle herausgefunden“ haben. Wenn Sie ein wenig über Zeitzonen wissen, können Sie Ihr Denken zentrieren und sicherstellen, dass Sie bei der Manipulation von Zeiten keine logischen Fehler machen.
Leider gibt es keine Möglichkeit, die Schwierigkeit, Zeiten und Daten beim Programmieren zu speichern und zu bearbeiten, vollständig zu vermeiden. Wenn Sie diese Schritte befolgen und mit diesem Wissen arbeiten, können Sie die Aufgabe vereinfachen, indem Sie die Menge an Code reduzieren, die Sie schreiben müssen, und sich in Paradigmen zwingen, die weniger wahrscheinlich Probleme verursachen.
Teile Mit Deinen Freunden: