php - 使用 PHP 和 MySQL 处理时间戳(我的理论正确吗?)

标签 php mysql

我一直在研究 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/

相关文章:

php - 购物车结构问题、尺寸选择等

php - 如何使用ID从关联表中获取值?

javascript - 按钮单击事件后显示文本框

php - 使用带有 switch 功能的 foreach

php - Symfony2 & Doctrine - 获取从数据源返回的行数

c# - MySQL中只取第一个满足第二个条件的

php - 加速PHP递归函数

MYSQL <> 运算符代替 NOT IN

php - cron centOS "Could not open input file"错误

php - 安全抛出 500 异常,在 TokenStorage 中找不到 token ,而不是 403 或 401