Даты не корректируются по часовому поясу - PullRequest
0 голосов
/ 12 ноября 2018

INSPDATE - это поле даты и времени в базе данных MS SQL.Обычно, когда мы вводим дату, браузер автоматически корректирует ее в соответствии с нашим EST, но он не работает с отчетом о проверке, который я создаю.Я пытался

echo date('m/d/Y  g:i a ', strtotime($row['INSPDATE']));

Но он возвращает дату 1970 года (31.12.1969 19:00) и не извлекает значение из базы данных.

Нижеэто то, что я использовал, возвращает дату так же, как она сохраняется в БД.Я знаю, что есть способ вычесть 18000 для этого, чтобы приспособиться к EST (-5 часов), но я не уверен, где его поставить.Я получаю сообщения об ошибках при смешивании datetime и нечисловых значений.

<?php

require_once ('connection.php');

$sql = "SELECT INSPDATE, FACILID FROM dbo.SWFACILITYINSPECTION WHERE FACILID = 'E667'";
$query = sqlsrv_query( $conn, $sql );
while ($row=sqlsrv_fetch_array( $query )) {

//This will show dates, but it's database time (UTC, so +5 hours)
echo date_format($row['INSPDATE'], 'm/d/Y  g:i a ');

}

?>

1 Ответ

0 голосов
/ 12 ноября 2018

Вы всегда должны делать это преобразование в логике приложения, так как ваш sql встроенный, я полагаю, вы могли бы встроить вычисления в ваш sql.Если бы я лучше знал PHP, я был бы более склонен изучать математику даты, используя язык приложения, чтобы вы могли создать библиотеку часовых поясов для использования в датах в других местах и ​​освободить свои запросы, хранить процедуры наготове, просто запросыи хранимые процедуры, которые возвращают данные.

DECLARE @Offset INT = -5

SELECT INSPDATE_UTC=INSPDATE, INSPDATE_LOCAL = DATEADD(HOUR, @Offset,INSPDATE)
...