Wie Timestamp richtig verarbeiten?

Hi zusammen,

ich möchte für eine Online-Abfrage einen Timestamp übergeben. Dazu habe ich eine Integer-Variable mit dem Profil ~UnixTimestamp angelegt. Im Webfront und in der Baumansicht der Console stimmt die ausgewählte Zeitangabe überein, z.B. „09.04.2019, 07:30:00“ für 9.April 2019 7:30 Uhr. Wenn ich mir den Wert mit GetValue geben lasse bekomme ich 1554787800 = 04/09/2019 @ 5:30am (UTC)

Ich möchte aber den lokalen Wert für 7:30 Uhr haben => 1554795000 (04/09/2019 @ 7:30am (UTC))

Wie mache ich das am besten?

Habe von der PHP Seite folgendes kleine Script ausgeführt:


<?php

date_default_timezone_set("UTC"); 
echo "UTC:".time(); 
echo PHP_EOL; 

date_default_timezone_set("Europe/Berlin"); 
echo "Europe/Berlin:".time(); 
echo PHP_EOL; 

Ergebniss:


UTC:1557667101
Europe/Berlin:1557667101

Hätte da unterschiedliche Werte erwartet, kann mir das jemand erklären?

Danke Heiko


$timestamp_local = GetValueFormatted(12345 /*[Zeit]*/);
$date = new DateTime($timestamp_local, new DateTimeZone('EUROPE/Berlin'));
$timestamp = $date->getTimestamp();
echo $timestamp ."
";
$offset = $date->getOffset();
echo $offset . "
";
$local_timestamp = $timestamp + $offset;
var_dump($local_timestamp);

Die Erklärung ist einfach.
Ein UnixTimestamp ist immer UTC.
Wenn da jemand eine andere Zeitzone für annimmt, so ist das erstmal falsch umgesetzt.
Da der Wert ja keine Daten für eine Zeitzone liefert, muss es immer die Gleiche (UTC) sein.
Michael

Hi Fonzo,

danke für Deine Lösung, hatte in der Zwischenzeit folgende Lösung gebaut:


$timestamp = GetValue(45849); 
echo $timestamp ."
"; 
$offset = date("Z", $timestamp);
$local_timestamp = $timestamp + $offset; 
var_dump($local_timestamp); 

Liefern beide gleiche Lösungen :slight_smile:

Danke & Ciao
Heiko

Danke Michael,

sollte eigentlich so sein bei einer Normierung :wink:

Gruß Heiko