![]() |
Das 2038-Problem: wie würdet ihr euch vorbereiten?
Aus gegebenem Anlass
Zitat:
Wie würdet ihr eure Software schon jetzt anpassen, damit ihr nicht von dem Problem betroffen seid? Ich würde vermutlich vor lauter Dummheit einfach Cardinal nehmen statt Integer. Geht das überhaupt? Oder aber das ISO 8601 YYYYMMDDHHMMSS-Format. |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Ich wandle, anders als du, Int64 nicht unnötigerweise in Integer um und lese Compilermeldungen.
|
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Zitat:
Wer bitte sagt denn, dass ich keine Compilermeldungen lese? Wer bitte sagt, dass ich Int64 in Integer umwandle? Jetzt bitte etwas zum Thema Mister Neunmalklug oder raus hier. |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Ich persönlich verwende inzwischen 64-Bit Integer (Int64). Damit hat man diese Problem erst garnicht. Software, die noch 32-Bit Integer verwendet, würd ich entsprechend auf Int64 anpassen. Das dürfte am wenigsten Aufwand sein, ansonsten müsste man an entsprechenden Stellen eine Umwandlungsfunktion bauen, um sie in ein entsprechendes Format zu bringen.
Was ich bisher zu dem Thema im Internet gelesen habe, ist das auch die Variante, die Empfohlen wird (insbesondere auch bei Web-Apps, die ja sehr häufig mit Unixtimestamps arbeiten). Gruß Uwe |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Was spricht gegen
![]() Abgesehen davon arbeitet Delphi bei Unix-TimeStamps doch sowieso schon mit Int64:
Delphi-Quellcode:
{ Unix date conversion support }
function DateTimeToUnix(const AValue: TDateTime; AInputIsUTC: Boolean = True): Int64; function UnixToDateTime(const AValue: Int64; AReturnUTC: Boolean = True): TDateTime; |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Das sind noch über 20 Jahre. Ich weiß noch nicht einmal ob mein Kühlschrank-Inhalt bis Samstag reicht, da denke ich über das Ende des Maya-Kalenders oder Unix-Zeitstempels (wenn er signed und 32 Bit ist) ganz sicher nicht nach 8-)
Das als Antwort auf die Frage. |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Glados, was Himi im anderen Thread meinte, war das du für die Umwandlung zwischen Datetime und Unix-Timestamp deine eigenen Funktionen mit Integer als Datentyp nimmst.
Das ist a) sachlich falsch und b) das Rad neu erfunden. Siehe die von Uwe erwähnten Funktionen in der System.DateUtils:
Delphi-Quellcode:
{ Unix date conversion support }
function DateTimeToUnix(const AValue: TDateTime; AInputIsUTC: Boolean): Int64; var LDate: TDateTime; begin if AInputIsUTC then LDate := AValue else LDate := TTimeZone.Local.ToUniversalTime(AValue); Result := SecondsBetween(UnixDateDelta, LDate); if LDate < UnixDateDelta then Result := -Result; end; function UnixToDateTime(const AValue: Int64; AReturnUTC: Boolean): TDateTime; begin if AReturnUTC then Result := IncSecond(UnixDateDelta, AValue) else Result := TTimeZone.Local.ToLocalTime(IncSecond(UnixDateDelta, AValue)); end; |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Jupp, ich nehme auch gern für meine Variablen die Typen, welche man bei Parametern und vorallem beim Result raus bekommt ... dann wird auch nichts weggeschnitten :zwinker:
Zitat:
Damals, in den 80er (20 Jahre vorher) dachte man auch, dass es reicht, wenn man nur die letzten 2 Dezimalstellen des Jahres speichert .... ist ja noch soooo viel Zeit :stupid: Und sogar jetzt laufen noch sehr viele DOS-Programme, auf irgendwelchen mehr oder weniger wichtigen Systemen. Du weißt aber, dass im Oktober 2017 der Weltuntergang ist? Diesmal aber wirklich. Aber falls nicht, dann 2029, wo so ein kleines Steinchen vom Himmel fällt. Gut, damit wäre das Problem hier auch erledigt. :) ![]() Es gab irgendwo eine Webseite mit einer zuverlässigen Liste aller Termine, aber ich glaub sie ist untergegangen ... find sie nicht mehr. |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Hmm..
Zitat:
Und dass schon seit Delphi6 (nur ohne UTC) ;)
Delphi-Quellcode:
{ Unix date conversion support }
function DateTimeToUnix(const AValue: TDateTime): Int64; function UnixToDateTime(const AValue: Int64): TDateTime; |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Zitat:
Nutzt du generell Int64 überall oder nur da wo es sein muss? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz