gpt4 book ai didi

PHP-MySQL : Converting Unix Timestamp to DateTime and vice versa

转载 作者:IT老高 更新时间:2023-10-28 23:46:40 30 4
gpt4 key购买 nike

我使用 php 5.4.6 和 MySQL 5.5.29,我将 UNIX TIMESTAMP 转换为 MYSQL DATETIME 遇到了麻烦,反之亦然。 Mysql 和 php 在同一台本地机器上运行。

我有一个简单的mysql表

CREATE TABLE Entry(
id SERIAL PRIMARY KEY,
created DATETIME NOT NULL);

要插入数据,我使用 php PDO 和 mysql NOW()。这工作正常,正确的日期时间存储在数据库中。

我的计划是在客户端使用 unix 时间戳(在服务器端使用 php 和 mysql)。

所以我想向我的客户提供 unix 时间戳。因此我使用 MySql UNIX_TIMESTAMP() 函数直接在查询中进行转换。

所以示例查询如下所示:

SELECT created, UNIX_TIMESTAMP(created) AS TS FROM Entry

结果:创建 = 2013-02-14 20:47:35TS = 1360871255

所以现在我想做另一种方式,我传递一个 UNIX 时间戳,并想将它与我的数据库中的条目进行比较。不幸的是,我无法编写有效的 PHP 脚本。我不知道为什么,但是当我将相同的时间戳 (1360871255) 传递给 PHP 时,我没有使用这种方法得到 2013-02-14 20:47:35:

public static function toDateTime($unixTimestamp){
return date("Y-m-d H:m:s", $unixTimestamp);
}

当我调用 toDateTime(1360871255) 时,将返回 2013-02-14 20:02:35,这不是原始的 DateTime。

我知道,我不需要将 1360871255 格式化为 Y-m-d H:m:s 即可在 MYSQL 中使用它,但 1360871255 似乎不是我预期的时间(并且 MYSQL UNIX_TIMESTAMP 已返回)。

我想要做的是一个简单的查询,它向我显示早于某个时间戳的条目,就像这样简单:

SELECT * FROM Entry WHERE created < 1360871255

但正如我之前提到的,查询结果不是预期的,因为 1360871255 似乎不是正确的时间。

我没有为php中的mysql连接指定任何特殊时区。

有什么建议吗?

最佳答案

您的date format是错误的... i 是分钟,而不是 m(月)。

return date("Y-m-d H:i:s", $unixTimestamp);

一些旁注:

  • 无需重新赋值,即$unixTimestamp = $unixTimestamp;
  • 由于您使用的是 PHP > 5.3。您可能对新的 DateTime 感兴趣对象。

关于PHP-MySQL : Converting Unix Timestamp to DateTime and vice versa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14883617/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com