Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
860to864
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UNIX Timestamp richtig umrechnen

UNIX Timestamp richtig umrechnen
18.04.2007 07:36:35
SteffenS
Hallo zusammen,
ich bekomme aus einer Datenbank einen Unix Timestamp:
z.B.: 1172790000 soll 02.03.2007 00:00 ergeben
Ich habe eine Funktion gefunden
' Unix-Timestamp in lesbares Datum/Zeit konvertieren
' (VB-Date)
</p><pre>Public Function VB_CTime(ByVal dblSec As Double) As Variant
' dblSec = vergangene Sekunden seit 1.1.1970
Dim vStart As Variant
' Fehlerbehandlung einschalten, falls
' dblSec außerhalb des Gültigkeitbereichs
On Error Resume Next
vStart = DateSerial(1970, 1, 1)
VB_CTime = DateAdd("s", dblSec, vStart)
End Function</pre><p>
Diese funktioniert auch.
Das Problem dabei ist nur das die Zeitzone nicht richtig berücksichtigt wird
Bei der Funktion kommt 01.03.2007 23:00 Uhr heraus.
Was muss ich anpassen damit es passt?
Danke im Voraus.
MFG
Steffen Schmerler

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UNIX Timestamp richtig umrechnen
18.04.2007 08:21:00
haw
Hallo Steffen,
ich würde einfach die Stunde (=3600 Sekunden) in der Funktion dazuaddieren:
' Unix-Timestamp in lesbares Datum/Zeit konvertieren
' (VB-Date)

Public Function VB_CTime(ByVal dblSec As Double) As Variant
' dblSec = vergangene Sekunden seit 1.1.1970
Dim vStart As Variant
' Fehlerbehandlung einschalten, falls
' dblSec außerhalb des Gültigkeitbereichs
On Error Resume Next
dblSec = dblSec + 3600
vStart = DateSerial(1970, 1, 1)
VB_CTime = DateAdd("s", dblSec, vStart)
End Function


Gruß
Heinz

AW: UNIX Timestamp richtig umrechnen
18.04.2007 08:55:00
Oberschlumpf
Hi Stefan, Hi Heinz
Heinz, und was machst du, wenn die Sommerzeit wieder zur Winterzeit geändert wird?
Stefan, hier mein Vorschlag:

Public Function VB_CTime(ByVal dblSec As Double) As Variant
' dblSec = vergangene Sekunden seit 1.1.1970
Dim vStart As Variant
Dim ldtSZ As Date, ldtWZ As Date, liDatum As Integer
For liDatum = 31 To 1 Step -1
If Weekday(liDatum & ".03." & Year(Date), vbMonday) = 7 Then
ldtSZ = liDatum & ".03." & Year(Date)
Exit For
End If
Next
For liDatum = 31 To 1 Step -1
If Weekday(liDatum & ".10." & Year(Date), vbMonday) = 7 Then
ldtWZ = liDatum & ".10." & Year(Date)
Exit For
End If
Next
' Fehlerbehandlung einschalten, falls
' dblSec außerhalb des Gültigkeitbereichs
On Error Resume Next
vStart = DateSerial(1970, 1, 1)
If Date >= ldtSZ And Date 


Die Sommerzeit beginnt nach Regelung innerhalb der EU immer am letzten Sonntag im März.
Und die Winterzeit beginnt immer am letzten Sonntag im Oktober.
Deshalb wird im Code mit Hilfe der beiden For/Next-Schleifen zuerst der letzte Sonntag im März und dann im Oktober für das aktuelle Jahr ermittelt.
Abhängig davon wird dann die 1 Stunde (3600) hinzuaddiert oder eben auch nicht.
Konnte ich helfen?
Ciao
Thorsten

Anzeige
AW: UNIX Timestamp richtig umrechnen
18.04.2007 12:43:00
haw
Hallo Thorsten,
vermutlich wird der Zeitstempel die Sommer-/Winterzeit berücksichtigen.
Dann musst du immer 1 Stunde addieren.
Gruß
Heinz

AW: UNIX Timestamp richtig umrechnen
18.04.2007 16:58:00
Oberschlumpf
Hi Heinz
Wohl nicht, denn wenn es so wäre, dann hätte Steffen ja in seiner Funktion schon den richtigen Rückgabewert.
Aber das wissen wir erst, WENN Steffen denn mal antworten würde!!!
Ciao
Thorsten

AW: UNIX Timestamp richtig umrechnen
19.04.2007 13:28:17
SteffenS
Habe die Stunde addiert und dann ging es
Danke Euch allen nochmals
Steffen

140 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige