Speichern von Daten mit mehr als 4 Stellen

8

Ich brauche eine Möglichkeit Serialisierung und Deserialisierung von Daten, die möglicherweise in der Vergangenheit weit entfernt sind, zum Beispiel -10000

Ich schaue zuerst auf ISO8601, aber es scheint keine Jahre mit mehr als vier Ziffern zu unterstützen. (Oder zumindest Python-Bibliotheken, die ich versucht habe, nicht.)

Die verschiedenen Lösungen, die ich mir vorstellen kann:

  • Ändern Sie das Jahr vor der Serialisierung / Deserialisierung, geben Sie es an die Analyse- / Formatierungsbibliothek und reparieren Sie es zurück (klingt hacky)
  • definiere mein eigenes Format, wie year:month:day:hour:minute:second (das Rad neu erfinden, da ich mit Zeitzonen usw. umgehen muss.)
  • Verwenden Sie einen UNIX-Zeitstempel ohne Begrenzungen oder etwas Ähnliches (kann in einigen Programmiersprachen überlaufen und immer noch die Zeitzone)
  • Speichern Sie die Daten vor -9999 (oder 0 ) anders als nach denen, da zu dieser Zeit kein Zeitzonenproblem / Schaltjahre / ... aufgetreten ist. (zwei verschiedene Formate am selben Ort)

Siehst du irgendeinen anderen Weg, der besser wäre als diese? Oder empfehle einen von denen?

    
Valentin Lorentz 10.11.2014, 08:38
quelle

3 Antworten

1

Sie könnten eine Seite von den Astronomen nehmen. Sky Maps erklären sie eine lange Zeit Präzession der Erde Spin durch Etablierung von Epochen. (Der Himmel ist anders, wenn Sie jetzt gegen 10.000 BC schauen.)

Erstellen Sie eine neue Klasse mit einer "Epoche" -Nummer und einem Fassadenmuster Ihrer aktuellen Datumsklasse. Die neue Klasse enthält zwei private Felder für epoch und internal-date. Ihr Konstruktor setzt epoch auf (Jahr div 10000) und instanziiert das interne Datum mit (Jahr modulo 10000). Ich hoffe, dass das restliche Fassadenmuster so offensichtlich ist wie ich denke.

    
StevePoling 10.11.2014 16:59
quelle
0

Sehen Sie sich die FlexiDate Klasse an - dies könnte für Ihre Zwecke nützlich sein.

Es ist kein Standard-Compliance-Weg in irgendeiner Weise, aber es könnte den Trick für Sie tun

    
JimiDini 10.11.2014 09:30
quelle
0

ISO 8601 unterstützt Datumsangaben mit mehr als 4 digits if und nur, wenn sie signiert sind. Die einzige PHP -Funktion, die ich kenne, die diese Funktionalität unterstützt, ist

%Vor%

Offensichtlich ist es ein Schmerz, zu verwenden, weil es erfordert, die Versätze von vollkommen guten Tag- / Monatspaaren zu berechnen. Das heißt, Sie sollten in der Lage sein BC-Daten zu erstellen, indem Sie das Jahr mit einem '-' (Minuszeichen) signieren.

Dann würden Sie das Datum mit

ausgeben %Vor%

In der Produktion würde das etwa so aussehen:

%Vor%     
Jonathan Bedder 15.11.2014 14:24
quelle

Tags und Links