采用 Date 和 Time 是 WordPress 服务器端开发人员十分日常生活的组织工作,他们晓得 PHP 提供更多了十分多的天数有关的表达式和类,但 WordPress 对天数的处置,有他们两套的方法论。
许多人刚开始在 WordPress 处置天数有关的机能或是难题的这时候,时常遇到许多不幸的情形,这是即使对 WordPress 的许多增设和处置方法论不熟识导致的。上面传授下在 WordPress 中采用 Date 和 Time 的实战经验和坑:
UTC 夏令时间
在 PHP 中,他们能采用 date 表达式序列化两个天数戳,比如说:
假如他们在 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 表达式:
式化天数戳。
所以在 WordPress 进行序列化天数戳操作的这时候,只需要记住这条规则:把 date 表达式替换成 wp_date 表达式即可。
wp_date表达式还能进行许多本地化工作。
比如说要采用如上图所示后台增设的日期和天数格式显示当前的天数:
wp_timezone
wp_date表达式之所以能够恰当显示天数,是即使 WordPress 提供更多了两个夏令时间的表达式,他们能够恰当返回后台增设的夏令时间:
wp_timezone_string()timezone_string(比如说:Asia/Shanghai )还是 gmt_offset(比如说:UTC+8)方式增设都能。
wp_timezone()DateTimeZone 对象。
wpjam_strtotime
前面解决了在 WordPress 中基于天数戳恰当显示天数的难题,然后还有两个常见的操作是将日期转换为日期戳,PHP 提供更多了两个 strtotime 的表达式:
和上面输入的 1669043745也是相距 8×3600,也是8半小时,同样的原因,那个表达式也是基于控制系统预设的夏令时间的,前面可知,WordPress 增设预设的夏令时间是 UTC 夏令时间。
所以为的是方便将当地天数恰当转换成天数戳,所以我写了两个表达式 wpjam_strtotime:
利用前面介绍的 WordPress 提供更多的表达式 wp_timezone(),这
wpjam_strtotime很快会在 WPJAM Basic 新版本中发布,所以有了第二条规则:在 WordPress 进行日期和天数转换成天数戳操作的这时候,把 strtotime 表达式替换成 wpjam_strtotime 表达式即可。
总结
一句话总结,他们在 WordPress 中能采用 Date 和 Time 做许多事情,但一定采用 WordPress 方式,WordPress 方式,我也总结为两条规则:
进行序列化天数戳操作的这时候:把 date 表达式替换成 wp_date 表达式。
将日期和天数转换成天数戳的这时候:把 strtotime 表达式替换成 wpjam_strtotime 表达式。