Я полностью новичок в PHP, и я работаю над небольшим проектом, чтобы визуализировать номерные знаки наших авторизованных читателей (Openalpr) для наших вилочных погрузчиков, чтобы показать колдунов-лорров, которые прибыли в зону загрузки (зона 2)
Все работает на Ubuntu 16.04.1
Проблема заключается в том, что временная метка номерной таблички, прочитанная в MySQL db, находится в формате времени UTC: 2018-04-05 08:56:33.320000
и я хочу ее по-шведски по местному времени без миллисекунд (CET), например: 2018-04-05 10:56:33
Как я могу это сделать? Вся помощь приветствуется!
Мой PHP-код прямо сейчас:
<?php
require_once 'dbconfig.php';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$sql = 'SELECT epoch_time_start,
best_plate
FROM front_alprgroup
ORDER BY epoch_time_start DESC LIMIT 30';
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("Could not connect to the database $dbname :" . $e->getMessage());
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Lorrys in Zone 2</title>
</head>
<body>
<div id="container">
<h1>Lorrys in Zone 2</h1>
<table class="table table-bordered table-condensed">
<thead>
<tr>
<th>Lorry</th>
<th>Time</th>
</tr>
</thead>
<tbody>
<?php while ($row = $q->fetch()): ?>
<tr>
<td><?php echo htmlspecialchars($row['best_plate']) ?></td>
<td><?php echo htmlspecialchars($row['epoch_time_start']); ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</body>
</div>
</html>
"Необычный" вывод HTML на веб-сервере: Лори в зоне 2 на веб-странице
Ну вот:
$dateTime = '2018-04-05 08:56:33.320000';
$utc = 'UTC';
$swedish = 'Europe/Stockholm';
$newDateTime = new DateTime($dateTime, new DateTimeZone($utc));
$newDateTime->setTimezone(new DateTimeZone($swedish));
echo $newDateTime->format('Y-m-d H:i:s');
Поэтому я обновил ваш блок кода, добавив вышеуказанный код в качестве функции, а затем воспользуюсь функцией для отображения дат в вашем цикле.
<?php
require_once 'dbconfig.php';
function convertDate($dateTime){
$utc = 'UTC';
$swedish = 'Europe/Stockholm';
$newDateTime = new DateTime($dateTime, new DateTimeZone($utc));
$newDateTime->setTimezone(new DateTimeZone($swedish));
return $newDateTime->format('Y-m-d H:i:s');
}
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$sql = 'SELECT epoch_time_start,
best_plate
FROM front_alprgroup
ORDER BY epoch_time_start DESC LIMIT 30';
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("Could not connect to the database $dbname :" . $e->getMessage());
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Lorrys in Zone 2</title>
</head>
<body>
<div id="container">
<h1>Lorrys in Zone 2</h1>
<table class="table table-bordered table-condensed">
<thead>
<tr>
<th>Lorry</th>
<th>Time</th>
</tr>
</thead>
<tbody>
<?php while ($row = $q->fetch()): ?>
<tr>
<td><?php echo htmlspecialchars($row['best_plate']) ?></td>
<td><?php echo convertDate($row['epoch_time_start']); ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</body>
</div>
</html>