是否有一个PHP函数,返回日期和时间在相同的格式MySQL函数NOW()?

我知道如何使用date()来做到这一点,但我在问是否有一个函数仅用于此。

例如,返回:

2009-12-01 00:00:00

当前回答

没有内置的PHP now()函数,但可以使用date()来实现。

例子

function now() {
    return date('Y-m-d H:i:s');
}

如果需要更改时区,可以使用date_default_timezone_set()。

否则,您可以使用Carbon -一个简单的PHP API扩展DateTime。

其他回答

还有一个我觉得很好用的答案:

echo date('c');

// 2015-07-27T00:00:00+02:00

这是MySQL使用的ISO 8601日期(在PHP 5中添加)

Edit

MySQL 5.7默认不允许timezone在datetime中。您可以使用SQL_MODE=ALLOW_INVALID_DATES禁用该错误。详情请点击这里:https://stackoverflow.com/a/35944059/2103434。但这也意味着保存到数据库时时区将丢失!

默认情况下,MySQL使用系统的时区,只要PHP使用相同的时区就可以了。在我的例子中,CET / UTC+2。

这意味着如果我将2015-07-27T00:00:00+02:00插入到数据库中,只有2015-07-27T00:00:00将被存储(但这是正确的本地时间!)

当我把时间加载回PHP时,

$importedDate = new \DateTime('2015-07-27T00:00:00')

它会自动假设它是+02:00时区,因为它是默认的。打印这个将是正确的:

echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

为了安全起见,总是在服务器上使用UTC,在MySQL和PHP中指定它,然后只在显示日期时将其转换为用户的语言环境:

date_default_timezone_set('UTC');
$importedDate = new \DateTime('2015-07-27T00:00:00+02:00');
echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

$importedDate->setTimezone(new \DateTimeZone("America/New_York"));
echo $importedDate->format('c');
// 2015-07-26T18:00:00-04:00

你可以使用date函数:

date("Y-m-d H:i:s");

我的回答是多余的,但如果你是强迫症,视觉导向,你只需要在你的代码中看到now关键字,使用:

date( 'Y-m-d H:i:s', strtotime( 'now' ) );
date('Y-m-d H:i:s')

更多详情请点击这里:http://pl.php.net/manual/en/function.date.php

试试这个:

date("Y-m-d H:i:s");