Signatur
Beschreibung
variant_date_to_timestamp() konvertiert einen COM-Variant-Wert vom Typ VT_DATE in einen PHP-kompatiblen Unix-Zeitstempel. VT_DATE ist das interne Datumsformat von Microsoft COM/OLE, das Datum und Uhrzeit als Gleitkommazahl seit dem 30. Dezember 1899 darstellt.
Diese Funktion ist vor allem dann nützlich, wenn PHP über die COM-Erweiterung mit Windows-Anwendungen (z. B. Microsoft Excel, Access oder andere ActiveX/COM-Server) kommuniziert und dabei Datumswerte ausgetauscht werden. Der zurückgegebene Unix-Zeitstempel lässt sich anschließend mit Standard-PHP-Funktionen wie date(), strftime() oder DateTime::createFromFormat() weiterverarbeiten.
Die Umkehroperation — also die Konvertierung eines Unix-Zeitstempels zurück in einen COM-Variant-Datumswert — übernimmt die Funktion variant_date_from_timestamp().
Hinweis: Diese Funktion ist nur auf Windows-Systemen mit aktivierter COM-Erweiterung (php_com_dotnet.dll) verfügbar und steht auf Unix/Linux nicht zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $variant Pflicht | variant | Ein COM-Variant-Objekt vom Typ VT_DATE, das das zu konvertierende Datum enthält. Typischerweise stammt dieser Wert aus einer COM-Interaktion, z. B. aus einer Excel-Zelle oder einem anderen COM-Server. |
Rückgabewert
Beispiele
Excel-Datumswert per COM in Unix-Zeitstempel umwandeln
<?php
// Verbindung zu einer Excel-Datei über COM herstellen
$excel = new COM('Excel.Application');
$excel->Workbooks->Open('C:\\daten\\tabelle.xlsx');
$sheet = $excel->ActiveSheet;
// Zelle A1 enthält ein Datum (z. B. 01.01.2024)
$variantDatum = $sheet->Cells(1, 1)->Value;
// Variant-Datum in Unix-Zeitstempel umwandeln
$timestamp = variant_date_to_timestamp($variantDatum);
echo 'Unix-Zeitstempel: ' . $timestamp . PHP_EOL;
echo 'Lesbar: ' . date('d.m.Y H:i:s', $timestamp) . PHP_EOL;
$excel->Workbooks->Close();
$excel->Quit();
$excel = null;
?>
Manuell erzeugten Variant-Datumswert konvertieren
<?php
// Einen Variant-Datumswert aus einem Unix-Zeitstempel erstellen
$timestamp = mktime(12, 0, 0, 6, 15, 2023); // 15. Juni 2023, 12:00 Uhr
// Erst in Variant-Datum umwandeln, dann zurückkonvertieren
$variantDatum = variant_date_from_timestamp($timestamp);
$zurueck = variant_date_to_timestamp($variantDatum);
echo 'Originaler Timestamp: ' . $timestamp . PHP_EOL;
echo 'Nach Roundtrip: ' . $zurueck . PHP_EOL;
echo 'Datum: ' . date('d.m.Y H:i:s', $zurueck) . PHP_EOL;
?>
// Wichtig · Fallstricke
Plattformabhängigkeit: variant_date_to_timestamp() ist ausschließlich auf Windows-Systemen verfügbar und erfordert die aktivierte PHP-COM-Erweiterung (extension=php_com_dotnet.dll in der php.ini). Auf Linux- oder macOS-Systemen ist diese Funktion nicht vorhanden.
Zeitzonenproblematik: Der zurückgegebene Unix-Zeitstempel basiert auf der lokalen Systemzeit des Windows-Systems. Bei Anwendungen, die mit UTC oder anderen Zeitzonen arbeiten, sollte die Zeitzone sorgfältig berücksichtigt werden, um unerwartete Zeitverschiebungen zu vermeiden.
Wertebereich: Das VT_DATE-Format kann Daten im Bereich vom 1. Januar 100 bis zum 31. Dezember 9999 darstellen, während Unix-Zeitstempel (als 32-Bit-Integer) nur Daten zwischen 1901 und 2038 abdecken. Auf 64-Bit-Systemen mit PHP ist der Bereich deutlich größer, dennoch sollte bei sehr alten Datumswerten Vorsicht geboten sein.