Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahl in VBA in Datum und Zeit umwandeln

Forumthread: Zahl in VBA in Datum und Zeit umwandeln

Zahl in VBA in Datum und Zeit umwandeln
13.11.2018 10:32:18
Excel2017
Hallo Forum,
in einer Sicherung habe ich unter anderem den Wert 1489329674129 gefunden. Dahinter verbirgt sich das Datum 22.10.2018.
Meine Frage: wie kann ich die oben genannte Zahl - ggf. mit VBA - in ein Datum und die Uhrzeit umwandeln?
Vielen Dank im Voraus
Werner
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl in VBA in Datum und Zeit umwandeln
13.11.2018 10:33:41
SF
Hola,
und welche Logik steckt dahinter? Der 22.10.2018 ist der 43395 Tag der Excel-Zeitrechnung - aber auch die Zahl kann ich da nirgends entdecken.
Gruß,
steve1da
AW: Zahl in VBA in Datum und Zeit umwandeln
13.11.2018 10:48:24
Excel2017
Hallo steve1da,
ich habe schon mehrere Umrechnungsversuche gemacht, bin aber nicht in die Nähe des zugehörigen Datums gekommen. Es steckt ja auch noch eine Uhrzeit in dem Wert.
Gruß Werner
Anzeige
AW: Zahl in VBA in Datum und Zeit umwandeln
13.11.2018 10:58:12
SF
Hola,
und welche Uhrzeit ist das?
Woher weißt du dass die Zahl+Uhrzeit der 22.10.2018 ist?
Welche Zahl wäre der 4.7.2018?
Verstehst du worauf ich hinaus möchte?
Gruß,
steve1da
AW: Zahl in VBA in Datum und Zeit umwandeln
13.11.2018 11:14:14
Excel2017
Hallo steve1da,
die zugehörige Uhrzeit ist mir nicht bekannt. Bei den Daten handelt es sich um die mit "ff password exporter für firefox" exportierten Anmeldedaten. In Firefox sehe ich nur das Datum, nicht zu zugehörige Uhrzeit. Mit dem genannten Tool wird eine CSV-File erstellt. Und die versuche ich nun, "lesbar" zu machen.
Gruß
Werner
Anzeige
AW: welche Datei
13.11.2018 11:23:52
Fennek
Hallo,
wenn man das genannte Stichwortt gucklt, findet man zwar den Ordner, nicht aber die Datei mit dem Password. Kannst du das bitte ergänzen.
mfg
AW: Zahl in VBA in Datum und Zeit umwandeln
13.11.2018 11:51:59
Excel2017
Hallo steve1da,
das genannte Tool benötigt die Files key4.db und logins.json aus dem Firefox-Verzeichnis und kann die Daten als CSV- oder als JSON-File speichern.
Gruß
Werner
Anzeige
AW: passt das?
13.11.2018 11:55:15
Fennek
DuckDuckGo war wieder einmal schlechter als Goooooo?
Hilft das?
https://www.epochconverter.com/
Damit wäre es ein UNIX-Zeitstempel, für die Übersetzung in VBA gäbe es genügend Beispiele
Wenn das ein Unix-Timestamp wäre
13.11.2018 12:04:17
EtoPHG
Fennek,
Dann würde es in EXCEL ergeben:
12.03.2017 14:41:14.129
was aber der Aussage es handle sich um den 22.10.2018 widerspricht!
Gruess Hansueli
Anzeige
AW: Wenn das ein Unix-Timestamp wäre
13.11.2018 12:52:04
Excel2017
Hallo Forum,
ich muss leider eine kleine Berichtigung vornehmen. Die am Anfang genannte Zahl für den 22.10.2018 ist 1540234226865 und nicht 1489329674129. Sorry.
Es gibt insgesamt pro Eintrag 3 verschiedene Zeiten:
timeCreated
timeLastUsed
timePasswordChanged
Firefox zeigt nur das Datum der letzten Änderung an.
Dank dem Hinweis von EtoPHG habe ich jetzt eine brauchbare Spur gefunden; vermutlich ist die Zahl die Zeit in Sekunden. Muss das noch testen, benötige vermutlich keine weitere Hilfe mehr.
Vielen Dank.
Anzeige
Hier eine kleine UDF zum umrechnen
13.11.2018 13:20:48
EtoPHG
Hallo Werner,
Diese UDF (in ein Standardmodul) rechnet die beiden Varianten von Unix-Timestamps (10 oder 13stellig) in ein XL-Datum Zeit um.
'Function: UnixTime2XL
'Converts a UNIX Timestamp to a EXCEL DateTime value
' timeStamp = A Unix Timestamp
' GMToffset = Hours offset to GMT, if omitted NO offset
' millis = timestamp is in milliseconds (automatically assumed if timestamp > 2^32)
' trueXLDate = If TRUE, cutoff milliseconds
Public Function UnixTime2XL(TimeStamp As Variant, Optional GMToffset As Integer, Optional  _
millis As Boolean, Optional trueXLDate As Boolean) As Variant
Dim timeStampSec As Double
If trueXLDate And Len(TimeStamp) > 10 Then TimeStamp = Left(TimeStamp, 10)
If Len(TimeStamp) > 10 Or millis Then
timeStampSec = CDbl(WorksheetFunction.RoundDown(TimeStamp / 1000, 0))
UnixTime2XL = (timeStampSec / 3600 / 24) + DateSerial(1970, 1, 1)
If GMToffset  0 Then UnixTime2XL = UnixTime2XL + (1 / 24 * GMToffset * 1)
UnixTime2XL = Format(UnixTime2XL, "dd.mm.yyyy hh:mm:ss") & "." & (TimeStamp - ( _
timeStampSec * 1000))
Else
UnixTime2XL = (TimeStamp / 3600 / 24) + DateSerial(1970, 1, 1)
If GMToffset  0 Then UnixTime2XL = UnixTime2XL + (1 / 24 * GMToffset)
UnixTime2XL = CDate(UnixTime2XL)
End If
End Function

z.B. als Formel:
=UnixTime2XL(1540234226865) ergibt 22.10.2018 18:50:26.865 (als String)
=UnixTime2XL(1540234226865;;;WAHR)
oder
=UnixTime2XL(1540234226)
ergibt 22.10.2018 18:50:26 (als XL Datum/Zeit, Format der Zelle einstellen!)
Gruess Hansueli
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zahl in VBA in Datum und Zeit umwandeln


Schritt-für-Schritt-Anleitung

Um einen UNIX-Zeitstempel in ein Excel-Datum und eine Uhrzeit umzuwandeln, kannst du die folgende VBA-Funktion verwenden. Diese Funktion konvertiert sowohl 10- als auch 13-stellige Zeitstempel und berücksichtigt dabei auch Zeitzonen:

'Function: UnixTime2XL
'Converts a UNIX Timestamp to an EXCEL DateTime value
' timeStamp = A Unix Timestamp
' GMToffset = Hours offset to GMT, if omitted NO offset
' millis = timestamp is in milliseconds (automatically assumed if timestamp > 2^32)
' trueXLDate = If TRUE, cutoff milliseconds
Public Function UnixTime2XL(TimeStamp As Variant, Optional GMToffset As Integer, Optional _
millis As Boolean, Optional trueXLDate As Boolean) As Variant
    Dim timeStampSec As Double
    If trueXLDate And Len(TimeStamp) > 10 Then TimeStamp = Left(TimeStamp, 10)
    If Len(TimeStamp) > 10 Or millis Then
        timeStampSec = CDbl(WorksheetFunction.RoundDown(TimeStamp / 1000, 0))
        UnixTime2XL = (timeStampSec / 3600 / 24) + DateSerial(1970, 1, 1)
        If GMToffset > 0 Then UnixTime2XL = UnixTime2XL + (1 / 24 * GMToffset * 1)
        UnixTime2XL = Format(UnixTime2XL, "dd.mm.yyyy hh:mm:ss") & "." & (TimeStamp - (timeStampSec * 1000))
    Else
        UnixTime2XL = (TimeStamp / 3600 / 24) + DateSerial(1970, 1, 1)
        If GMToffset > 0 Then UnixTime2XL = UnixTime2XL + (1 / 24 * GMToffset)
        UnixTime2XL = CDate(UnixTime2XL)
    End If
End Function

Um die Funktion zu verwenden, gib einfach die folgende Formel in eine Zelle ein:

=UnixTime2XL(1540234226865)

Das ergibt das Datum und die Uhrzeit für den UNIX-Zeitstempel.


Häufige Fehler und Lösungen

  1. Fehler: Falsches Datum oder Uhrzeit

    • Lösung: Überprüfe, ob der Zeitstempel in Millisekunden angegeben ist. In diesem Fall musst du die Funktion so anpassen, dass sie die Millisekunden richtig behandelt.
  2. Fehler: #WERT! oder #NAME?

    • Lösung: Stelle sicher, dass die Funktion korrekt in einem Standardmodul in VBA eingefügt wurde.
  3. Fehler: Ungültige Zeitzone

    • Lösung: Achte darauf, dass der GMToffset korrekt angegeben ist. Ein positiver Wert verschiebt die Zeit nach vorne, ein negativer Wert nach hinten.

Alternative Methoden

Wenn du keinen VBA-Code verwenden möchtest, kannst du auch die folgenden Excel-Funktionen nutzen:

  • TEXT-Funktion: Wenn du einen UNIX-Zeitstempel hast, kannst du ihn auch direkt mit der TEXT-Funktion umwandeln.

    =TEXT((A1/86400) + DATE(1970,1,1), "dd.mm.yyyy hh:mm:ss")

    Hierbei ist A1 die Zelle mit deinem UNIX-Zeitstempel in Sekunden.

  • Power Query: Importiere deine Daten in Power Query und nutze das Datumsformatierungswerkzeug, um die Zeitstempel zu konvertieren.


Praktische Beispiele

  1. Beispiel zur Umwandlung eines UNIX-Zeitstempels: Gebe in Zelle A1 den Wert 1540234226865 ein und in B1 die folgende Formel:

    =UnixTime2XL(A1)

    Das Ergebnis wird 22.10.2018 18:50:26.865 sein.

  2. E+14 in Excel: Um zu zeigen, dass solche Zahlen in Excel sehr hoch sind und möglicherweise als wissenschaftliche Notation angezeigt werden, formatiere die Zelle als Text, bevor du den Wert eingibst.


Tipps für Profis

  • Zeitzonen berücksichtigen: Bei der Umwandlung von Zeitstempeln ist es wichtig, die korrekten GMT-Offsets zu verwenden, um die Uhrzeit präzise zu berechnen.

  • Nutzung von UDFs: Erstelle eigene benutzerdefinierte Funktionen (UDFs) in VBA, um wiederkehrende Umwandlungen zu automatisieren und Zeit zu sparen.

  • Excel-Formatierung: Stelle sicher, dass die Zellen, in denen du die Ergebnisse anzeigst, im Datums- oder Zeitformat formatiert sind, um die Lesbarkeit zu verbessern.


FAQ: Häufige Fragen

1. Wie erkenne ich, ob ein Zeitstempel in Millisekunden oder Sekunden ist? Normalerweise sind Zeitstempel in Millisekunden länger als 10 Ziffern. Wenn du einen Zeitstempel hast, der 13 Ziffern hat, handelt es sich wahrscheinlich um Millisekunden.

2. Kann ich diese Methode auch in Excel für Mac verwenden? Ja, die VBA-Funktion ist plattformunabhängig und sollte sowohl auf Windows- als auch auf Mac-Versionen von Excel funktionieren.

3. Wie kann ich einen UNIX-Zeitstempel in UTC umrechnen? Nutze die GMToffset-Option in der Funktion, um die Zeit in UTC zu konvertieren, indem du den entsprechenden Offset hinzufügst oder abziehst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige