繁体   English   中英

如何使用PHP将日期转换为UTC午夜

[英]How to convert date to UTC midnight using PHP

我试图将日期传递给hubspot。但是它显示以下错误消息[message] => 1462127400是UTC的22:8:47.400,不是午夜!

如何使用PHP将日期转换为UTC午夜格式

开始当前时间 (午夜)的简短方法

echo date_create( date('Y-m-d'), timezone_open( 'UTC' ) )->getTimestamp();

将输出(现在是2016年4月2日10:22 UTC):

1459555200

校验:

$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;

输出:

2016-04-02 00:00:00
1459555200

要根据给定的日期字符串 (即默认的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;

输出:

2016-03-15 00:00:00
1458000000

单行方式:

echo date_create($dateString)->setTimezone(timezone_open('UTC'))->modify('midnight')->getTimestamp();

要根据给定的时间戳获取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;

输出:

2016-03-15 00:00:00
1458000000

单行方式:

echo date_create("@$timeStamp")->modify('midnight')->getTimestamp();

请注意,使用UNIX时间戳,我们不需要设置TimeZone,因为UNIX时间戳是基于UTC的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM