mkrasselt1
Goto Top

Seltsames Datumsformat in .dbf Datei

Ich binn auf ein seltsames datums Zeit Format gestoßen, und möchte wissen, wie man es entschlüsselt.

Hallo Leute,
Ich bin in der Datenbankdatei eines Wetterstations-Auslese-Programms
(TFA-Dostman für Nexus-Wetterstation)
auf die Spalte mit den Datums-Uhreitsangaben gestoßen,
doch ich konnte damit nichts anfangen.
So sieht ener dieser Werte aus.
Soweit ich weiß, enthält er:
Datum TT.MM.YYYY
Uhzeit SS:MM:SS
38617,316666667

Doch wie genau weiß ich nicht.
Wenn es euch hilf, ich lese die Datenbank mit PHP aus,
ist ein .dbf file, und geht auch super in excel zu öffnen.

Ich hoffe auf Antwort.
Danke

Michael

Content-ID: 151723

Url: https://administrator.de/contentid/151723

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

bastla
bastla 24.09.2010 um 16:34:20 Uhr
Goto Top
Hallo mkrasselt1!

Soferne damit ein Timestamp für
23.09.2009 07:36:00
gemeint wäre, handelt es sich um eine Darstellung als "1904-Datumswert" - vor dem Komma findest Du die Anzahl der Tage seit dem 01.01.1904, und nach dem Komma die Uhrzeit (als Bruchteil eines Tages).

Sollte der Wert
22.09.2005 07:36:00
repräsentieren, entspricht die Zahl vor dem Komma der Tageanzahl ab 01.01.1900.

Hinsichtlich der Uhrzeit als Berechnungsbeispiel (allerdings in VBS):
S = Int(.316666667 * 86400)
Std = Int(S / 60 / 60)
Min = Int((S - Std * 60 * 60) / 60)
Sek = S - Std * 60 * 60 - Min * 60
WScript.Echo S,Std,Min,Sek
Grüße
bastla
mkrasselt1
mkrasselt1 24.09.2010 um 16:56:34 Uhr
Goto Top
ok, lass mich mal rechnen,
gibt es dafür eine funktion, mit dem amn das ausrechnen kann ?
oder muss ich die selberschreiben ?
bastla
bastla 24.09.2010 um 16:59:30 Uhr
Goto Top
Hallo mkrasselt!
gibt es dafür eine funktion, mit dem amn das ausrechnen kann ?
Kann ich für PHP nicht beantworten - allerdings ließe sich das (nochmals in VBS) auch so formulieren:
S = Int(.316666667 * 86400)
Std = S \ (60 * 60)
Min = (S Mod (60 * 60)) \ 60
Sek = S Mod 60
WScript.Echo S,Std,Min,Sek
wobei "\" für eine ganzzahlige Division steht ...

Grüße
bastla
mkrasselt1
mkrasselt1 24.09.2010 um 17:50:39 Uhr
Goto Top
gut, ich hab es mal in php umgesetzt,
aber irgentwie kommt da nicht das selbe raus,
wie in dem Programm, das zur wetterstation gehört.
Das kommt raus:1
7.600000008:36:0
<?php
$timestamp = ".38617.316666667.";  
$timearray = explode(".", $timestamp);  
$s = "0.".$timearray['2'];  
$s = $s * 86400;
echo $s."<br>\n";  
$stunde = $s / (60 * 60); 
echo $stunde."<br>\n";  
$minute = ($s % (60 * 60)) / 60; 
echo $minute."<br>\n";  
$sekunde = $s % 60; 
echo $sekunde."<br>\n";  
echo $stunde.":".$minute.":".$sekunde;  
?>
Und rauskommen sollte:
23.09.2005 16:56


Woran kann das liegen ?
bastla
bastla 24.09.2010 um 18:03:06 Uhr
Goto Top
Hallo mkrasselt1!
7.600000008:36:0
sieht dem Ergebnis
7:36:0
das ich auch mit Excel erhalte (allerdings für den 22.09.2005) ja schon sehr ähnlich - es fehlt eigentlich nur die ganzzahlige Division für die Stunde (damit aus 7.600000008 nur 7 wird) ...
Die Differenz auf "23.09.2005 16:56" kann ich leider nicht erklären ...

Grüße
bastla
mkrasselt1
mkrasselt1 27.09.2010 um 23:12:20 Uhr
Goto Top
So, hate mal wieder zeit zum Batseln.
Die Uhrezit stimmt exakt, und die Datum brauch ich jetzt doch nicht mehr, da ich die Datensätze eh aller 1s aktualiesiere, und sich so schnell keine Datum ändert.
Später interessiert mich das Datum eh nicht mehr, wäre höchstens für die Anzeigen.

Danke nochmal für deine Hilfe mit der Uhrzeitberechnung.

Michael