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'.
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. |