AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Das 2038-Problem: wie würdet ihr euch vorbereiten?
Thema durchsuchen
Ansicht
Themen-Optionen

Das 2038-Problem: wie würdet ihr euch vorbereiten?

Ein Thema von Glados · begonnen am 29. Aug 2017 · letzter Beitrag vom 31. Aug 2017
Antwort Antwort
Seite 1 von 2  1 2      
Glados
(Gast)

n/a Beiträge
 
#1

Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 29. Aug 2017, 23:30
Aus gegebenem Anlass
PS: Ab dem 19. Januar 2038 um 03:14:08 wird deine Funktion wieder kaputt sein, wenn der Integer zu klein für den Unix-Timestamp ist.
Wie werdet ihr damit umgehen? Sind wir jetzt mal theoretisch und lassen Sachen wie Rente usw außer acht.
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.

Geändert von Glados (29. Aug 2017 um 23:34 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 29. Aug 2017, 23:55
Ich wandle, anders als du, Int64 nicht unnötigerweise in Integer um und lese Compilermeldungen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#3

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 29. Aug 2017, 23:59
Zitat:
Ich wandle, anders als du, Int64 nicht unnötigerweise in Integer um und lese Compilermeldungen.
Ich möchte hier gerne eine friedliche Diskussion führen. Was du hier machst, ist genau das Gegenteil.
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.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 30. Aug 2017, 03:41
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
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#5

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 30. Aug 2017, 07:48
Was spricht gegen TTimeStamp?

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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 30. Aug 2017, 08:55
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

Das als Antwort auf die Frage.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 30. Aug 2017, 09:00
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#8

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 30. Aug 2017, 09:29
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

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
Weißt do noch vor fast 18 Jahren, wo alle Computer auf der Welt abgestürzt sind?
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

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.

http://www.stupidedia.org/stupi/Welt...nterg.C3.A4nge
Es gab irgendwo eine Webseite mit einer zuverlässigen Liste aller Termine, aber ich glaub sie ist untergegangen ... find sie nicht mehr.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Aug 2017 um 09:40 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#9

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 30. Aug 2017, 09:35
Hmm..

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;

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;
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#10

AW: Das 2038-Problem: wie würdet ihr euch vorbereiten?

  Alt 30. Aug 2017, 10:48
Zitat:
Software, die noch 32-Bit Integer verwendet, würd ich entsprechend auf Int64 anpassen.
Das wäre auch eine Lösung die noch ein paar Jahre hält.
Nutzt du generell Int64 überall oder nur da wo es sein muss?

Geändert von Glados (30. Aug 2017 um 10:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz