Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UNIX Timestamp richtig umrechnen

Forumthread: 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

Anzeige

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

Anzeige
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

Anzeige
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
;
Anzeige

Infobox / Tutorial

UNIX Timestamp in Excel richtig umrechnen


Schritt-für-Schritt-Anleitung

Um einen UNIX Timestamp in Excel korrekt in ein Datum umzuwandeln, kannst Du die folgende VBA-Funktion verwenden. Diese Funktion berücksichtigt auch die Sommerzeit und Winterzeit.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
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

    ' Berechnung der Sommerzeit
    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

    ' Berechnung der Winterzeit
    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
    On Error Resume Next
    vStart = DateSerial(1970, 1, 1)

    ' Anpassung der Zeitzone
    If Date >= ldtSZ And Date < ldtWZ Then
        dblSec = dblSec + 3600 ' Sommerzeit: 1 Stunde hinzufügen
    End If

    VB_CTime = DateAdd("s", dblSec, vStart)
End Function
  1. Schließe den VBA-Editor.
  2. Verwende die Funktion in einer Excel-Zelle, indem Du =VB_CTime(A1) schreibst, wobei A1 die Zelle mit dem UNIX Timestamp ist.

Häufige Fehler und Lösungen

  • Problem: Das Datum wird nicht korrekt angezeigt (z.B. eine Stunde Abweichung).

    • Lösung: Stelle sicher, dass Du die Sommerzeit korrekt berücksichtigst, indem Du die oben angegebene Funktion verwendest.
  • Problem: Fehlermeldungen bei ungültigen Timestamps.

    • Lösung: Achte darauf, dass der Timestamp gültige Sekunden seit dem 1.1.1970 (Unix-Epoche) sind.

Alternative Methoden

Falls Du keine VBA-Funktion verwenden möchtest, kannst Du auch Formeln in Excel nutzen:

  1. Für die Umwandlung in Datum ohne Berücksichtigung der Zeitzone:
=A1/86400 + DATE(1970,1,1)
  1. Für UNIX Timestamp in Datum umwandeln mit Zeitzonenanpassung:
=(A1/86400 + DATE(1970,1,1)) + IF(AND(TODAY() >= DATE(YEAR(TODAY()),3,31), TODAY() < DATE(YEAR(TODAY()),10,31)), 1/24, 0)

Praktische Beispiele

  • Beispiel 1: Umwandlung eines UNIX Timestamps in ein Datum:

    • Gegeben: 1172790000 (entspricht 02.03.2007 00:00).
    • Benutze die Funktion =VB_CTime(1172790000).
  • Beispiel 2: Umrechnung für Sommer- und Winterzeit:

    • Bei einem Timestamp von 1176881795 erhältst Du durch die Funktion =VB_CTime(1176881795) den richtigen Zeitpunkt unter Berücksichtigung der aktuellen Zeitzone.

Tipps für Profis

  • VBA optimieren: Wenn Du regelmäßig mit UNIX Timestamps arbeitest, kannst Du die Funktion erweitern, um auch verschiedene Zeitzonen zu berücksichtigen.
  • Datenbankintegration: Du kannst die Funktion direkt in Datenbankabfragen einbinden, um UNIX Timestamps bei der Datenanalyse zu nutzen.
  • Fehlerprotokollierung: Implementiere eine Fehlerüberprüfung, um ungültige Timestamps zu protokollieren und zu analysieren.

FAQ: Häufige Fragen

1. Wie kann ich einen UNIX Timestamp in Excel ohne VBA umrechnen?
Du kannst die Formel =A1/86400 + DATE(1970,1,1) verwenden, um den Timestamp in ein Datum umzuwandeln, allerdings wird dabei die Zeitzone nicht berücksichtigt.

2. Was ist der Unterschied zwischen Sommerzeit und Winterzeit in diesem Kontext?
Die Sommerzeit wird in vielen Ländern durch das Hinzufügen einer Stunde zu den UTC-Zeiten realisiert, während die Winterzeit keine solche Anpassung erfordert. Dies muss bei der Umrechnung von UNIX Timestamps beachtet werden.

3. Funktioniert diese Methode in allen Excel-Versionen?
Die VBA-Funktion funktioniert in den meisten modernen Excel-Versionen. Einige ältere Versionen könnten jedoch Einschränkungen haben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige