目前我正在创建一个也创建日志的网站。问题是,时间戳。除了“小时”以外的所有内容都正确读取PHP时间戳小时问题
代码:
$date = date('Y-m-d, g:i:s a');
$sql = "INSERT INTO logs (ip, date, page) VALUES ('$ip', '$date', '$page')";
目前,它是下午6时41分,这就是它的读数(分秒准确)
目前我正在创建一个也创建日志的网站。问题是,时间戳。除了“小时”以外的所有内容都正确读取PHP时间戳小时问题
代码:
$date = date('Y-m-d, g:i:s a');
$sql = "INSERT INTO logs (ip, date, page) VALUES ('$ip', '$date', '$page')";
目前,它是下午6时41分,这就是它的读数(分秒准确)
试试这个...
// 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
你应该确实将日期存储为datetime,而不是一个字符串...此外,我会高度考虑将所有日期存储为UTC。这样,你总是知道什么时候完成了,而且不是相对的。您可以在任何适合的时区内将日期显示回用户。如果你想使这两个chages的,您的查询就会变成:
$sql = "INSERT INTO logs (ip, date, page) VALUES ('$ip', UTC_TIMESTAMP(), '$page')";
而且,请注意,在这里张贴的其他搜索解决方案... getdate()
是不一个MySQL的功能,它是专为SQL Server。如果你在任何函数名称周围包含引号,MySQL将把整个事件解释为一个字符串而不是一个函数。
我读过日期()已被弃用。
所以,我个人使用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/>";
?>
希望这会有所帮助。
1.将日期列存储在'date/datetime'类型的列中是一种糟糕的做法2.您对时区有什么了解? – zerkms
我强烈建议在数据库中的日期字段是bigint,所以你可以把时间()而不是日期()。它独立于数据库并且没有问题。然后,您可以阅读日期,如日期('FORMAT',$ TS_FROM_DB) – Scony
这是在我的个人电脑上运行。据我所知,它应该抓住我的电脑系统时间。是? –