在 PHP 中创建此日期格式:YYYY-MM-DDTHH:MM:SS+-HH:MM


Creating this date format in PHP: YYYY-MM-DDTHH:MM:SS+-HH:MM

我正在使用SparkPost API,我无法理解如何在PHP中使用YYYY-MM-DDTHH:MM:SS+-HH:MM创建日期。

什么是+-HH:MM,这是时区吗?

我从回顾其他类似的堆栈交换主题中获得的最接近的结果是:

if ( !$send_now && self::$row->datetime )
{
   // This data is available: [send_datetime] => 04/01/2016 01:30
   // This data is available: [timezone] => MDT-UTC-7
   $send_at = date( 'Y-m-dTH:i:s' , strtotime( self::$row->datetime ) );
}
else
{
   $send_at = 'now';
}

另一个仅供参考的是,我正在使用WordPress,并且希望针对实例设置的时区。

任何帮助表示赞赏。


更新了有效的代码
if ( !$send_now && self::$row->datetime ) {
    $send_at = date( 'c' , strtotime( self::$row->datetime ) );
    if (isset(self::$email_settings['timezone'])) {
        $date_parts = explode('+' , $send_at );
        $timezone_parts = explode('UTC' , self::$email_settings['timezone'] );
        $send_at = $date_parts[0] .$timezone_parts[1].':00';
    }
} else {
        $send_at = 'now';
}

这是 ISO 8601 日期格式。请参阅 https://en.wikipedia.org/wiki/ISO_8601。

+-HH:MM 是 UTC 的时区偏移量。

在PHP中,您可以使用"c"将日期格式化为ISO 8601。

$send_at = date( 'c', strtotime( self::$row->datetime ) );

这是您正在寻找的格式

$send_at = date( 'c' , strtotime( self::$row->datetime ) );

它被称为ISO 8601 date

UTC 位置的输出2016-04-22T22:48:10+00:00

是的,+-HH:MM 是与 UTC 的时区差异,+-