是否有一个PHP函数,返回日期和时间在相同的格式MySQL函数NOW()?
我知道如何使用date()来做到这一点,但我在问是否有一个函数仅用于此。
例如,返回:
2009-12-01 00:00:00
是否有一个PHP函数,返回日期和时间在相同的格式MySQL函数NOW()?
我知道如何使用date()来做到这一点,但我在问是否有一个函数仅用于此。
例如,返回:
2009-12-01 00:00:00
当前回答
或者你可以使用DateTime常量:
echo date(DateTime::W3C); // 2005-08-15T15:52:01+00:00
以下是他们的名单:
ATOM = "Y-m-d\TH:i:sP" ; // -> 2005-08-15T15:52:01+00:00
COOKIE = "l, d-M-Y H:i:s T" ; // -> Monday, 15-Aug-2005 15:52:01 UTC
ISO8601 = "Y-m-d\TH:i:sO" ; // -> 2005-08-15T15:52:01+0000
RFC822 = "D, d M y H:i:s O" ; // -> Mon, 15 Aug 05 15:52:01 +0000
RFC850 = "l, d-M-y H:i:s T" ; // -> Monday, 15-Aug-05 15:52:01 UTC
RFC1036 = "D, d M y H:i:s O" ; // -> Mon, 15 Aug 05 15:52:01 +0000
RFC1123 = "D, d M Y H:i:s O" ; // -> Mon, 15 Aug 2005 15:52:01 +0000
RFC2822 = "D, d M Y H:i:s O" ; // -> Mon, 15 Aug 2005 15:52:01 +0000
RFC3339 = "Y-m-d\TH:i:sP" ; // -> 2005-08-15T15:52:01+00:00 ( == ATOM)
RFC3339_EXTENDED = "Y-m-d\TH:i:s.vP" ; // -> 2005-08-15T15:52:01.000+00:00
RSS = "D, d M Y H:i:s O" ; // -> Mon, 15 Aug 2005 15:52:01 +0000
W3C = "Y-m-d\TH:i:sP" ; // -> 2005-08-15T15:52:01+00:00
对于调试,我更喜欢一个更短的(3v4l.org):
echo date('ymd\THisP'); // 180614T120708+02:00
其他回答
没有内置的PHP now()函数,但可以使用date()来实现。
例子
function now() {
return date('Y-m-d H:i:s');
}
如果需要更改时区,可以使用date_default_timezone_set()。
否则,您可以使用Carbon -一个简单的PHP API扩展DateTime。
你可以使用正确格式的PHP日期函数作为参数,
echo date("Y-m-d H:i:s");
使用这个函数:
function getDatetimeNow() {
$tz_object = new DateTimeZone('Brazil/East');
//date_default_timezone_set('Brazil/East');
$datetime = new DateTime();
$datetime->setTimezone($tz_object);
return $datetime->format('Y\-m\-d\ h:i:s');
}
我喜欢user1786647发布的解决方案,我对它进行了一些更新,将timezone更改为一个函数参数,并添加了可选的支持,可以传递Unix时间或datetime字符串来用于返回的日期戳。
它还为运行PHP 5.3以下版本的用户提供了"setTimestamp"的回退:
function DateStamp($strDateTime = null, $strTimeZone = "Europe/London") {
$objTimeZone = new DateTimeZone($strTimeZone);
$objDateTime = new DateTime();
$objDateTime->setTimezone($objTimeZone);
if (!empty($strDateTime)) {
$fltUnixTime = (is_string($strDateTime)) ? strtotime($strDateTime) : $strDateTime;
if (method_exists($objDateTime, "setTimestamp")) {
$objDateTime->setTimestamp($fltUnixTime);
}
else {
$arrDate = getdate($fltUnixTime);
$objDateTime->setDate($arrDate['year'], $arrDate['mon'], $arrDate['mday']);
$objDateTime->setTime($arrDate['hours'], $arrDate['minutes'], $arrDate['seconds']);
}
}
return $objDateTime->format("Y-m-d H:i:s");
}
我的回答是多余的,但如果你是强迫症,视觉导向,你只需要在你的代码中看到now关键字,使用:
date( 'Y-m-d H:i:s', strtotime( 'now' ) );