我一直在研究 PHP 和 MySQL 中的时间戳。我的理解是 UNIX 时间戳只存在于 GMT 中……关键是你将它转换为用户时区(GMT +/- timezone = users localtime)。我通过将时间戳保存为“原始”形式(作为 10 位长整型)并在查询中将其转换为本地时间来成功完成此操作
$row = $result->fetchRow(DB_FETCHMODE_ASSOC); $timestamp = $row['stamp']; date_default_timezone_set('America/New_York'); echo date("d/m/y : H:i:s", $timestamp);
这似乎工作正常,但我不确定这是否是执行此操作的“标准”方法。你有这方面的经验吗?
最佳答案
你的方法很好:)
您可能希望在更全局的范围内设置时区,例如在您用于登录的任何 PHP 脚本上,而不是每次使用日期函数时都必须重新调用它。如果您出于某种原因改变主意并想要标准化时区或类似的东西,这也使更改变得更容易。
事实上,在 MySQL 中管理 Unix 时间戳的最佳方法是 UNIX_TIMESTAMP() 函数。不带任何参数的 UNIX_TIMESTAMP() 只返回当前的 Unix 时间,而不是像
$time=time();
mysql_query('UPDATE table SET time='.$time.' WHERE what="ever"');
您可以通过直接在查询中粘贴 UNIX_TIMESTAMP 来完全减少额外的工作:
mysql_query('UPDATE table SET time=UNIX_TIMESTAMP() WHERE what="ever"');
干净多了!
关于php - 使用 PHP 和 MySQL 处理时间戳(我的理论正确吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/533049/