Frage

Die offizielle Python 2.5 unter Windows wurde mit Visual Studio.Net 2003 bauen, die 32-Bit-Time_t verwendet. Also, wenn das Jahr> 2038 ist, gibt es nur Ausnahmen.

Obwohl dies in Python fixiert 2.6 (die time_t zu 64 Bit mit VS2008 geändert), ich mag 2.5 verwenden, da viele Module bereits für sie zusammengestellt werden.

hier ist also meine Frage - ist es eine Lösung für leicht mein Programm Greift Jahr> 2038 lassen und noch offiziellen Python 2.5? Zum Beispiel kann einige vorgefertigten Bibliotheken wie "time64" oder „langfristigen“ etc ...

Bitte sagen Sie mir nicht zu 2.6+ oder vergessen Sie den Fehler zu aktualisieren. - Ich meinen Grund zu müssen, damit es funktioniert, das ist, warum ich die Frage hier posten

War es hilfreich?

Lösung 3

Die beste Lösung, die ich gefunden habe, ist eine Quelle Kopie von Python 2.5 zu bekommen, und neu kompiliert das Zeitmodul mit Compiler, die Standardwerten Time_t bis 64 Bit, beispielsweise VS2005 oder VS2008 (können auch die C-Laufzeit konfigurieren zu verhindern Side-by-Side-Ausgabe).

Andere Tipps

Das datetime Modul in der Standardbibliothek sollte für Sie funktionieren. Was halten Sie von dem Modul benötigen time dass datetime bietet nicht?

ich meine nicht abgedroschen klingen, aber warum nicht:

  • vergessen Sie den Y2038 Bug mit Python 2.5
  • Upgrade auf Python 2.6 zu einem bestimmten Zeitpunkt in der Zukunft vor 2038

Bearbeiten Um zu klären: (und ich meine es ernst - ich wollte nicht Spaß Sack)

Vermutlich können Sie Python 2.6 (oder höher) an einem gewissen unbestimmten Zeit zwischen jetzt aktualisieren und 2038. Vielleicht im Jahr 2012. Vielleicht im Jahr 2015. Vielleicht in 2037.

Wenn Sie in Ihrer Anwendung, die Unterschiede zwischen dem Zeitstempel Variable Python sind (ich bin nicht viel von einem Python-Benutzer), es wie diese scheint die wichtige Aspekte wären zu berücksichtigen:

  • , welche Daten gespeichert werden beharrlich
  • , wie ein Python 2.5 Zeitstempel-Variable, die beibehalten wurde, wieder hergestellt wird 2.6 mit Python (vermutlich wird es „das Richtige tun“)
  • , ob alte Daten werden in seiner hartnäckigen Form lange genug, um Unklarheiten (zB die Jahreszahl „96“ entstehen gespeichert ist eindeutig, wenn sie zwischen 1950 und 2049 in Betracht gezogen, aber wenn das Datum um bis zum Jahr 2230 dann „96“ gehalten wird, könnte 1996 2096 oder 2196)

Wenn die Antworten günstig sind, benutzen Sie einfach den regulären Zeitstempel mit seinem 2038 Bug. Sie werden feststellen, dass mit der Menge an Redesign / Refactoring vergleichen müss Sie Ihre Anwendung der Arbeit mit einem alternativen Zeitstempel (zum Beispiel einer Datenbank Zeitstempel String oder was auch immer) machen zu tun haben, zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top