PHP Timestamp Hour проблема

В настоящее время я создаю веб-сайт, который также создает журналы. Проблема в том, что это отметки времени. Все кроме Часа читает правильно.

Код:

$date = date('Y-m-d, g:i:s a');
$sql = "INSERT INTO logs (ip, date, page) VALUES ('$ip', '$date', '$page')";

В настоящее время это 6:41 вечера, и это то, что его чтение (минуты и секунды являются точными)

введите описание изображения здесь

2 ответа

Я читал, что дата () устарела.

Итак, я лично использую strftime().

например, чтобы получить время с микросекундной печатью:

<?php
  echo "Hello world!<br/>";
  echo "We are the ".strftime("%d %B %Y")."<br/>";
  echo "and it is now ".strftime("%I:%M:%S %p")." and ".(float)microtime()." ms.<br/>";
?>

Надеюсь это поможет.

Попробуй это...

// you need to find your timezone here: http://php.net/manual/en/timezones.php
$timezone = new DateTimeZone('America/New_York'); 

$date_obj = new DateTime("now", $timezone); 
$date_obj->setTimezone(new DateTimeZone('UTC'));

$date = $date_obj->format('Y-m-d H:i:s');  

$sql = "INSERT INTO logs (ip, date, page) VALUES ('$ip', '$date', '$page')";
print $sql;

Подробнее о DateTime

Вы действительно должны хранить даты как дату, а не как строку... Кроме того, я бы настоятельно рекомендовал хранить все даты как UTC. Таким образом, вы всегда точно знаете, когда что-то было сделано, и это не относительно. Вы можете отобразить дату обратно пользователю в любом часовом поясе. Если вы хотите выполнить оба этих шага, ваш запрос превратится в:

$sql = "INSERT INTO logs (ip, date, page) VALUES ('$ip', UTC_TIMESTAMP(), '$page')";

Кроме того, обратите внимание, что с другими решениями, размещенными здесь... getdate() это не функция MySQL, это исключительно для SQL Server. И если вы включите кавычки вокруг любого имени функции, MySQL будет интерпретировать все как строку, а не функцию.

Другие вопросы по тегам