AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Timestamp Unix in TDateTime Anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Timestamp Unix in TDateTime Anzeigen

Ein Thema von Alterauge · begonnen am 19. Feb 2013 · letzter Beitrag vom 4. Mär 2013
Antwort Antwort
Seite 2 von 2     12   
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#11

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 20. Feb 2013, 09:33
Hallo,

siehe Anhang Bild3 das DBGrid mit Timestamp.
Die Daten kommen aus einer MySQL DB.
Miniaturansicht angehängter Grafiken
bild3.png  
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 20. Feb 2013, 09:45
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  dateTime: TDateTime;
begin
  dateTime := unixToDateTime(1361196900);
  showMessage(dateTimeToStr(dateTime));
end;
ergibt 18.02.2013 14:15:00

Edit: Eine Konvertierung mit dem Webtool ergibt: Realzeit: 18.02.2013 - 15:15:00
Wodurch die 1h Abweichung entsteht .. ?

Grüße
Klaus
Klaus

Geändert von Klaus01 (20. Feb 2013 um 09:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 20. Feb 2013, 09:50
Kann man da nicht auf Feldebene ansetzen? Also entweder schon in der SQL-Abfrage casten
https://dev.mysql.com/doc/refman/5.5..._from-unixtime
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#14

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 4. Mär 2013, 17:16
Hallo,
hier jetzt das Rroblem richtig beschrieben.

Greife mit einem CRDBGrid auf eine mySQL DB zu.
Im CRDBGrid wird in der Zeile Timestamp das UnixDateTime format angezeigt!

Dieses möchte ich gerne ändern in das FormatDateTime.
Habe mir folgendes überlegt:

Delphi-Quellcode:
procedure TForm1.CRDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  i : Integer;
  Wert: string;
  d: TDateTime;
begin
   if (CRDBGrid1.DataSource.DataSet.RecordCount = 0) then
     Exit;
  Wert := CRDBGrid1.DataSource.DataSet.FieldByName('Timestamp').Value;
  d:= UnixToDateTime(i);
  Label3.Caption := FormatDateTime('dd/mm/yy hh:nn:ss', d);
  //CRDBGrid1.Canvas.TextRect(Rect, Label3.Caption);
  CRDBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Aber komme einfach nicht weiter, wer hat für mich einen Lösungsvorschlag?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 4. Mär 2013, 17:18
Immer noch denselben: konvertiere doch gleich in der Abfrage.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#16

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 4. Mär 2013, 17:23
DeddyH,

glaube es mir bin schon die ganze Woche am testen und am schreiben!
Zeig mir bitte wie!
Habe glaube alles was im Netz steht ausprobiert, ohne Erfolg!

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 4. Mär 2013, 17:24
Wie sieht denn Deine Abfrage aus?

[edit] Oder anders ausgedrückt: was kommt hierbei heraus?
SQL-Code:
SELECT
  FROM_UNIXTIME(Timestampfeld, '%d.%m.%Y %H:%i:%s') AS Datum
FROM
  Tabelle
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 4. Mär 2013 um 17:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#18

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 4. Mär 2013, 18:34
Also ich sehe das so:
Es gibt 2 Zeitsysteme: Unix (Sekunden seit dem 1. Januar 1970 (00:00 Uhr)) und Delphi (Anzahl Tage seit 31.12.1899).
Und es gibt sicher die Möglichkeit beide Zeitsysteme ineinander umzurechnen (wenn man >= 1970 bleibt).
Also muss man im ersten Schritt sich die beiden Umrechnungsfunktionen besorgen und überprüfen!
Am Besten man verwendet Funktionen aus der RTL/VCL und wenn es die dort noch nicht gibt,
muss man sich eben was besorgen (Jedi Code Library) oder selbst bauen.

Die Funktionen müssen umkehrbar sein, was man leicht testen kann:
Delphi-Quellcode:
heute := SysUtils.Date;
if Int(heute) <> Int(UnixToDateTime(DateTimeToUnix(heute))) then
   ShowMessage('Houston wir haben ein Problem');

if 9876000 <> DateTimeToUnix(UnixToDateTime(9876000)) then
   ShowMessage('Houston wir haben noch''n ein Problem');

ShowMessage(DateTimeToStr(UnixToDateTime(0))); // muss logischerweise der 1.1.1970 sein
Wenn wir jetzt wissen, dass die Funktionen korrekt sind, dann gibt es nur noch wenige Fehlermöglichkeiten:
* Werte in Datenbank sind falsch oder nicht im Unix-Format
* Werte werden falsch ausgelesen (aufbassen Int64)
* Code ist falsch und Alterauge hat den Tomaten-Auf-Den-Augen-Effekt vergessen
(und wenn mich nicht alles täuscht liegt genau hier der Fehler. Der Compiler gibt Warnungen aus wenn Variablen nicht initialisiert wurden!!)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:40 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