我试图将日期传递给 hubspot。但它显示以下错误消息 [message] => 1462127400 在 22:8:47.400 UTC,而不是午夜!
如何使用 PHP 将日期转换为 UTC 午夜格式
开始(午夜)UTC当天的捷径:
echo date_create( date('Y-m-d'), timezone_open( 'UTC' ) )->getTimestamp();
Run Code Online (Sandbox Code Playgroud)
将输出(现在是 2016-04-02 10:22 UTC):
1459555200
Run Code Online (Sandbox Code Playgroud)
查看:
$date = date_create( date('Y-m-d'), timezone_open( 'UTC' ) );
echo $date->format('Y-m-d H:i:s') . PHP_EOL;
echo $date->getTimestamp() . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
输出:
2016-04-02 00:00:00
1459555200
Run Code Online (Sandbox Code Playgroud)
要根据给定的日期字符串(即默认 TimeZone TOT)获取 UTC 日期的开始:
$dateString = '2016-03-15 23:05:00';
$date = new DateTime( $dateString );
# ????????????????> is the same as date_create()
$date->setTimezone( timezone_open( 'UTC' ) );
$date->modify( 'midnight' );
echo $date->format('Y-m-d H:i:s') . PHP_EOL;
echo $date->getTimestamp() . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
输出:
2016-03-15 00:00:00
1458000000
Run Code Online (Sandbox Code Playgroud)
单线方式:
echo date_create($dateString)->setTimezone(timezone_open('UTC'))->modify('midnight')->getTimestamp();
Run Code Online (Sandbox Code Playgroud)
要根据给定的时间戳获取 UTC 日的开始时间:
$timeStamp = 1458036300;
$date = new DateTime( "@$timeStamp" );
# ? use @ to create a DateTime from timestamp
$date->modify( 'midnight' );
echo $date->format('Y-m-d H:i:s') . PHP_EOL;
echo $date->getTimestamp() . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
输出:
2016-03-15 00:00:00
1458000000
Run Code Online (Sandbox Code Playgroud)
单线方式:
echo date_create("@$timeStamp")->modify('midnight')->getTimestamp();
Run Code Online (Sandbox Code Playgroud)
请注意,对于 UNIX 时间戳,我们不需要设置 TimeZone,因为 UNIX 时间戳是基于 UTC 的。