函数文档

iso8601_to_datetime()

💡 云策文档标注

概述

iso8601_to_datetime() 函数用于将 ISO 8601 格式的日期字符串转换为 MySQL DateTime 格式,常用于处理 WordPress 中的 post_date 和 post_date_gmt 字段。该函数支持指定时区,默认使用用户时区,也可设置为 GMT。

关键要点

  • 参数 $date_string 为必填,接受 ISO 8601 格式的日期字符串。
  • 参数 $timezone 可选,默认为 'user',可设置为 'gmt' 以返回 UTC 时间。
  • 返回值:成功时返回 MySQL DateTime 格式字符串(Y-m-d H:i:s),失败时返回 false。
  • 函数内部使用 date_create() 和 wp_timezone() 处理时区转换。

代码示例

function iso8601_to_datetime( $date_string, $timezone = 'user' ) {
    $timezone    = strtolower( $timezone );
    $wp_timezone = wp_timezone();
    $datetime    = date_create( $date_string, $wp_timezone ); // Timezone is ignored if input has one.

    if ( false === $datetime ) {
        return false;
    }

    if ( 'gmt' === $timezone ) {
        return $datetime->setTimezone( new DateTimeZone( 'UTC' ) )->format( 'Y-m-d H:i:s' );
    }

    if ( 'user' === $timezone ) {
        return $datetime->setTimezone( $wp_timezone )->format( 'Y-m-d H:i:s' );
    }

    return false;
}

注意事项

  • 输入日期字符串必须符合 ISO 8601 格式,否则可能返回 false。
  • 时区参数仅支持 'user' 或 'gmt',其他值将导致返回 false。
  • 函数依赖于 wp_timezone() 获取站点时区,确保其正确配置。

📄 原文内容

Given an ISO 8601 (YmdTH:i:sO) date, returns a MySQL DateTime (Y-m-d H:i:s) format used by post_date[_gmt].

Parameters

$date_stringstringrequired
Date and time in ISO 8601 format https://en.wikipedia.org/wiki/ISO_8601.
$timezonestringoptional
If set to 'gmt' returns the result in UTC. Default 'user'.

Return

string|false The date and time in MySQL DateTime format – Y-m-d H:i:s, or false on failure.

Source

function iso8601_to_datetime( $date_string, $timezone = 'user' ) {
	$timezone    = strtolower( $timezone );
	$wp_timezone = wp_timezone();
	$datetime    = date_create( $date_string, $wp_timezone ); // Timezone is ignored if input has one.

	if ( false === $datetime ) {
		return false;
	}

	if ( 'gmt' === $timezone ) {
		return $datetime->setTimezone( new DateTimeZone( 'UTC' ) )->format( 'Y-m-d H:i:s' );
	}

	if ( 'user' === $timezone ) {
		return $datetime->setTimezone( $wp_timezone )->format( 'Y-m-d H:i:s' );
	}

	return false;
}

Changelog

Version Description
1.5.0 Introduced.