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 будет интерпретировать все как строку, а не функцию.