![]() |
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? |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Zitat:
Zitat:
Zitat:
|
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
NativeInt statt integer, da wo Integer-Pointer gecastet werden (oder besser IntPtr),
und wo es unter 64 Bit auch 64 Bit sein darf/kann. Wobei Pointer nicht negativ sind, also UIntPtr/NativeUInt statt Cardinal. Bei SendMessage/PostMessage wird nicht Integer verwendet, sondern L_PARAM, W_PARAM und L_RESULT. Also nicht das verwenden, was die Codevervollständigung anzeigt, sondern die "korrekten" Typen, welche oftmals ein Alias sind, aber die Codevervollständigung zeigt immer nur den "aktuellen" Typen an. |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Himitsu war schneller und sein Text ist besser daher schmeiß ich mein Zeug wieder weg :-)
Zitat:
Zitat:
![]() |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Ich würde gerne beim Thema bleiben.
Der Ursprungsthread hat nichts mit diesem hier zu tun. Dieser Thread hat sich für mich jedenfalls erledigt, wenn man nicht beim Thema bleiben kann. Ich bin raus. |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Wir sind bei Deinem Thema. Der Schlüssel liegt in den 64 Bit Datentypen.
|
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Zitat:
|
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Man kann auf "Zitat von ..." klicken.
|
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Zitat:
|
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Zitat:
![]() |
AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?
Bei mir gibt es zwei Gründe weshalb ich überhaupt das Unixdatumsformat verwende:
Bei dem zweiten Punkt hängt es davon ab, ob ich den Aspekt der Speicherersparnis noch zeitgemäß finde. Wenn das nicht der Fall ist, wähle ich bei dem Wechsel auf 64 Bit ein anderes Datenformat (z.B TDateTime, TTimestamp oder TFiletime). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 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