使用 PHP 格式化 SQL 时间戳

2022-08-30 18:49:38

我有一个带有时间戳字段的mySQL数据库。当我测试时,它目前只有一个条目,它是

2010-02-20 13:14:09

我正在从数据库中提取并使用

echo date("m-d-Y",$r['newsDate'])

我的最终结果显示为

12-31-69

有人知道为什么吗?

编辑:编辑:忽略该编辑...记事本++的FTP插件超时,不幸的是,当它无法同步时不会显示错误。


答案 1

date 函数需要一个 UNIX 时间戳作为其第二个参数 - 这意味着您必须将从 DB 获得的日期转换为 UNIX 时间戳,这可以使用 strtotime 完成:

$db = '2010-02-20 13:14:09';
$timestamp = strtotime($db);
echo date("m-d-Y", $timestamp);

你会得到:

02-20-2010


您正在将字符串传递给函数 ;该字符串不是有效的 UNIX 时间戳。'2010-02-20 13:14:09'date

'12-31-69' 可能是 ,在您的区域设置中 ;并且是纪元 -- 对应于 0 UNIX 时间戳的日期。1970-01-011970-01-01


答案 2

对于初学者来说,php 函数期望秒作为第二个变量。因此,这解释了为什么您的日期显示错误。请就此问题检查此来源date()

然后为我们提供了问题的答案,为了让PHP从SQL时间戳正确格式化日期,我们只需更改查询一下...

SELECT author, `when`

将其更改为...

SELECT author, UNIX_TIMESTAMP(`when`)

然后使用 PHP 日期函数,其中包含存储上述 SQL 查询结果的变量。


推荐