告别相差8小时问题,在 WordPress 正确使用 Date 和 Time

2022-11-25 0 715

采用 Date 和 Time 是 WordPress 服务器端开发人员十分日常生活的组织工作,他们晓得 PHP 提供更多了十分多的天数有关的表达式和类,但 WordPress 对天数的处置,有他们两套的方法论。

许多人刚开始在 WordPress 处置天数有关的机能或是难题的这时候,时常遇到许多不幸的情形,这是即使对 WordPress 的许多增设和处置方法论不熟识导致的。上面传授下在 WordPress 中采用 Date 和 Time 的实战经验和坑:

UTC 夏令时间

在 PHP 中,他们能采用 date 表达式序列化两个天数戳,比如说:

echo date(Y-m-d H:i:s, 1669043745); // 2022-11-21 23:15:45

假如他们在 WordPress 也那么采用,Sonbhadra输入:2022-11-21 15:15:45,Sonbhadra相距8半小时,这是为何呢?

即使 WordPress 为的是避免即使控制系统相同增设导致的难题,先把预设的夏令时间增设为 UTC,也是格林尼治国际标准天数,和上海天数刚好差8个半小时。那个是在wp-settings.php 约莫 68行的边线:

// WordPress calculates offsets from UTC.

// phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set

date_default_timezone_set(UTC);

wp_date

那么在 WordPress 要恰当基于天数戳显示当地的天数怎么办呢?采用 wp_date 表达式:

echo wp_date(Y-m-d H:i:s, 1669043745); // 2022-11-21 23:15:45

式化天数戳。

所以在 WordPress 进行序列化天数戳操作的这时候,只需要记住这条规则:date 表达式替换成 wp_date 表达式即可

wp_date表达式还能进行许多本地化工作。

告别相差8小时问题,在 WordPress 正确使用 Date 和 Time

比如说要采用如上图所示后台增设的日期和天数格式显示当前的天数:

$date_format= get_option(date_format);$time_format= get_option(time_format);echo wp_date({$date_format}{$time_format});// 2022年11月21日 下午23:15

wp_timezone

wp_date表达式之所以能够恰当显示天数,是即使 WordPress 提供更多了两个夏令时间的表达式,他们能够恰当返回后台增设的夏令时间:

wp_timezone_string()timezone_string(比如说:Asia/Shanghai )还是 gmt_offset(比如说:UTC+8)方式增设都能。

wp_timezone()DateTimeZone 对象。

wpjam_strtotime

前面解决了在 WordPress 中基于天数戳恰当显示天数的难题,然后还有两个常见的操作是将日期转换为日期戳,PHP 提供更多了两个 strtotime 的表达式:

echo strtotime(“2022-11-21 23:15:45”); // 1669072545

和上面输入的 1669043745也是相距 8×3600,也是8半小时,同样的原因,那个表达式也是基于控制系统预设的夏令时间的,前面可知,WordPress 增设预设的夏令时间是 UTC 夏令时间。

所以为的是方便将当地天数恰当转换成天数戳,所以我写了两个表达式 wpjam_strtotime

function wpjam_strtotime($string){return date_create($string, wp_timezone())>getTimestamp();}

利用前面介绍的 WordPress 提供更多的表达式 wp_timezone(),这

echo wpjam_strtotime(“2022-11-21 23:15:45”); // 1669043745

wpjam_strtotime很快会在 WPJAM Basic 新版本中发布,所以有了第二条规则:在 WordPress 进行日期和天数转换成天数戳操作的这时候,strtotime 表达式替换成 wpjam_strtotime 表达式即可

总结

一句话总结,他们在 WordPress 中能采用 Date 和 Time 做许多事情,但一定采用 WordPress 方式,WordPress 方式,我也总结为两条规则:

进行序列化天数戳操作的这时候:date 表达式替换成 wp_date 表达式

将日期和天数转换成天数戳的这时候:strtotime 表达式替换成 wpjam_strtotime 表达式

举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务