Nach dem setzen von default-time-zone=+00:00 in /etc/mysql/mariadb.conf.d/50-server.cnf zeigt mein PHP-Script die Uhrzeit aus der Datenbank natürlich auch als UTC, statt die lokale Zeit.
Das zeigt die Uhrzeit richtig an:
PHP
<?php
date_default_timezone_set("Europe/Berlin");
$timestamp = time();
$datum = date("d.m.Y", $timestamp);
$uhrzeit = date("H:i:s",$timestamp);
echo "Aktuelles Datum und Zeit : ";
echo $datum," - ",$uhrzeit," Uhr<br />\n";
?>
Aber wie muss ich dieses Script umschreiben, damit ich wieder die lokale Zeit angezeigt bekomme ?
PHP
<?php
echo "<table style='border: solid 3px black; width:100%; text-align:center;'>";
echo "<tr><th colspan='4'; style='border: solid 3px black; width:25%; text-align:center;'>Daten</th></tr>";
echo "<tr><th style='border: solid 3px grey; width:25%; text-align:center;'>°C</th><th style='border: solid 3px grey; width:25%; text-align:center;'>%</th><th style='border: solid 3px grey; width:25%; text-align:center;'>hPa</th><th style='border: solid 3px grey; width:25%; text-align:center;'>gemessen</th></tr>";
class TableRows1 extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}
function current() {
return "<td style='border: solid 3px black; width:25%; text-align:center;'>" . parent::current(). "</td>";
}
function begindata() {
echo "<tr style='border: solid 3px black; width:25%; text-align:center;'>";
}
function enddata() {
echo "</tr>" . "\n";
}
}
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT temperatur, luftfeuchtigkeit, luftdruck, datumzeit FROM daten ORDER BY datumzeit DESC LIMIT 0,1");
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows1(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>
Display More
Gibt es da eine einfache Lösung für ?
Edit: So funktioniert es:
PHP
<?php
echo "<table style='border: solid 3px black; width:100%; text-align:center;'>";
echo "<tr><th colspan='4'; style='border: solid 3px black; width:25%; text-align:center;'>Daten</th></tr>";
echo "<tr><th style='border: solid 3px grey; width:25%; text-align:center;'>°C</th><th style='border: solid 3px grey; width:25%; text-align:center;'>%</th><th style='border: solid 3px grey; width:25%; text-align:center;'>hPa</th><th style='border: solid 3px grey; width:25%; text-align:center;'>gemessen</th></tr>";
class TableRows1 extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}
function current() {
return "<td style='border: solid 3px black; width:25%; text-align:center;'>" . parent::current(). "</td>";
}
function begindata() {
echo "<tr style='border: solid 3px black; width:25%; text-align:center;'>";
}
function enddata() {
echo "</tr>" . "\n";
}
}
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT temperatur, luftfeuchtigkeit, luftdruck, datumzeit FROM daten ORDER BY datumzeit DESC LIMIT 0,1");
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
$data = $stmt->fetch();
if ($data) {
// Convert UTC time to Europe/Berlin
$utc_time = new DateTime($data['datumzeit'], new DateTimeZone('UTC'));
$timezone = new DateTimeZone('Europe/Berlin');
$utc_time->setTimezone($timezone);
$formatted_datumzeit = $utc_time->format('Y-m-d H:i:s');
echo "<tr>";
echo "<td style='border: solid 3px black; width:25%; text-align:center;'>".$data['temperatur']."</td>";
echo "<td style='border: solid 3px black; width:25%; text-align:center;'>".$data['luftfeuchtigkeit']."</td>";
echo "<td style='border: solid 3px black; width:25%; text-align:center;'>".$data['luftdruck']."</td>";
echo "<td style='border: solid 3px black; width:25%; text-align:center;'>".$formatted_datumzeit."</td>";
echo "</tr>";
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>
Display More