目前我正在创建一个也创建日志的网站。问题是,是时间戳。除了小时之外的一切都正确阅读。
代码:
$date = date('Y-m-d, g:i:s a');
$sql = "INSERT INTO logs (ip, date, page) VALUES ('$ip', '$date', '$page')";
目前是下午6:41,这就是它的读数(分钟和秒都准确)
答案 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/>";
?>
希望这有帮助。