PHP时间戳小时问题

时间:2013-11-22 23:42:47

标签: 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,这就是它的读数(分钟和秒都准确)

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个......

// 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会将整个事物解释为字符串而不是函数。

答案 1 :(得分:0)

我已经读过不推荐使用date()。

所以,我个人使用strftime()。

e.g。得到微秒印章的时间:

<?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/>";
?>

希望这有帮助。