首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 WordPress 中如何使用 Date 和 Time

在 WordPress 中如何使用 Date 和 Time

作者头像
Denis
发布于 2023-04-14 06:43:18
发布于 2023-04-14 06:43:18
2K00
代码可运行
举报
文章被收录于专栏:WordPress果酱WordPress果酱
运行总次数:0
代码可运行

使用 Date 和 Time 是程序员一个非常日常的工作,比如定时发布,定时抓取信息等。PHP 提供很多 date/time 函数,但是 WordPress 有自己的一套,下面讲解下 WordPress 中使用 Date 和 Time 的经验和坑。

时区 - Timezone

使用 date/time 第一个的要注意的时时区,很多错误都是因为这个引起的,比如定时发布的文章在错误的时间发布了(比如你想是北京时间明天早上8点发布的,但是发布在格林尼治时间早上8点,即北京时间0点)。这种问题是非常难受的,并且非常难以去 debug,因为你得等着它再次运行才行。

WordPress 后台是可以让你设置时区的,在 设置 > 常规,并且可以使用下面代码获取:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$timezone_offet = get_option( 'gmt_offset' );

如果你的时间戳是 GMT,你可以使用下面代码转成本地时间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$timezone_offet = get_option( 'gmt_offset' );
$time += $timezone_offet * 3600;

千万不要用 time()

time() 是用来获取当前时间的 UNIX 时间戳格式,但是 WordPress 有自己用来处理时间(可以同时处理 GMT 和本地时间)的函数:current_time()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
current_time( $type, $gmt = 0 );

这个函数返回博客的当前本地时间,可以使 MySQL 时间数据格式(YYYY-MM-DD HH:MM:SS),也可以是 UNIX 时间戳格式,第三个参数是用来设置返回 GMT 时间还是博客本地时间。

所以如果你的代码用的是 time(),改成:current_time( 'timestamp', 1 ),将返回 GMT 时间,如果要获取本地时间,使用 current_time( 'timestamp' )

Date 和 time 格式

WordPress 让我们在 设置 > 常规 修改默认的时间格式,所以我们尽量在代码使用这个格式,而不要使用 date() 来生成,除非你自己要生成特殊的格式。

使用下面代码获取 WordPress 默认设置的时间格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$date_format = get_option( 'date_format' );
$time_format = get_option( 'time_format' );

下面例子以默认格式显示当前时间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$date_format = get_option( 'date_format' );
$time_format = get_option( 'time_format' );
echo date( "{$date_format} {$time_format}", current_time( 'timestamp' ) );

一句话总结:我们在 PHP 中可以使用 Date 和 Time 做很多事情,但是一定要用 WordPress 方式使用它们。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
告别相差8小时问题,在 WordPress 正确使用 Date 和 Time
使用 Date 和 Time 是 WordPress 第三方开发者非常日常的工作,我们知道 PHP 提供了非常多的时间相关的函数和类,但是 WordPress 对时间的处理,有自己一套的逻辑。
Denis
2023/04/13
9670
告别相差8小时问题,在 WordPress 正确使用 Date 和 Time
WordPress评论时间显示为8小时前的解决方法
大早上的心动科技的博主就来搞事情了,评论大早上跑来逛你们网站挖掘学习好东西!然后就在 Boke112 导航的交流群里艾特我,8 小时 BUG!!! 我跑来一看还真的是这样,快了 8 个小时,什么鬼啊?谁搞我服务器了?昨天还是正常的啊,心动大佬你是不是搞我服务器了!!WordPress 的默认时区是 UTC 格林威治时间,我看我后台常规设置中选的就是上海时区,但是就算是将 WordPress 时区调整为上海或 UTC+8 后,前台评论时间显示均还是 UTC 时间,与北京时间仍有 8 小时的时差,而后台评论的时
沈唁
2018/05/24
2.8K0
WordPress b2主题发布文章显示为8小时前的解决方法
昨天发现主题发布时间居然是8个小时前,去网上找了很多方法都无法解决问题,什么设置上海时区改为东八区,修改php.ini都无法解决问题,去查询服务器时间也是正确的,现在将正确的方法发上来给大家瞧瞧,也手动记录一下修改记录。
图图网
2021/08/28
9450
WordPress b2主题发布文章显示为8小时前的解决方法
SQL函数 CURRENT_TIME
CURRENT_TIME返回此时区的当前本地时间。它会根据当地时间变化(如夏令时)进行调整。
用户7741497
2022/04/01
8610
Python 时间处理全解析:从基础到实战
datetime 模块提供了更高级别的日期和时间处理功能,允许我们进行日期和时间的算术运算、格式化等。
一键难忘
2024/03/18
4640
【Mysql】The DATE, DATETIME, and TIMESTAMP Types
https://dev.mysql.com/doc/refman/8.0/en/datetime.html
阿东
2023/10/30
7820
【Mysql】The DATE, DATETIME, and TIMESTAMP Types
python常用内建模块之time、date、datetime
Python的time和datetime模块提供了时间日期工具, python中的时间有4种表示方式:
菲宇
2019/06/13
2.5K0
MySQL 日期字符串转换
from_unixtime 格式化时间戳,默认的格式化模式 '%Y-%m-%d %H:%i:%s '
全栈程序员站长
2022/08/22
4.2K0
MySQL 日期字符串转换
SQL函数 CURTIME
``不接受任何参数。它将当前本地时间作为数据类型TIME返回。请注意,参数括号是可选的。CURTIME返回此时区的当前本地时间;它根据本地时间变量(如夏令时)进行调整。
用户7741497
2022/03/25
5240
Python中的Time和DateTime
Python在处理与时间相关的操作时有两个重要模块:time和datetime。在本文中,我们介绍这两个模块并为每个场景提供带有代码和输出的说明性示例。
deephub
2023/08/30
3800
Python中的Time和DateTime
php参考手册 Date / Time 函数(7.4千字)
<?php //验证是否是验证格利高里日期 var_dump(checkdate(12,31,-400)); echo "<br />"; var_dump(checkdate(2,29,2003))
贵哥的编程之路
2022/05/06
1K0
php参考手册 Date / Time 函数(7.4千字)
MySQL中的时间类型
时间是一类重要的数据,MySQL中有多种关于时间的类型可以选择。这篇文章主要介绍MySQL中的时间类型,主要参考MySQL文档:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html
valineliu
2022/08/30
11.1K1
MySQL中的时间类型
【Mysql】Working with time zones, timestamps and datetimes in Laravel and MySQL
Working with time zones, timestamps and datetimes in Laravel and MySQL - Advanced and Qualified electronic signature marketplace (eideasy.com)
阿东
2023/10/22
8290
【Mysql】Working with time zones, timestamps and datetimes in Laravel and MySQL
Golang内置包-time
时间离我们仅在咫尺,无论是在编程中时间还是日常生活中对于时间的 记述都是离我们最近的,那么让我们一起来学习一下GoLang中内置包time。
PayneWu
2020/12/18
8910
SQL函数 CURRENT_TIMESTAMP
CURRENT_TIMESTAMP要么不接受参数,要么接受精度参数。 不允许使用空参数括号。
用户7741497
2022/04/01
1.5K0
MySQL 获得当前日期时间(以及时间的转换)。[通俗易懂]
转载:http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html
全栈程序员站长
2022/11/10
5.8K0
数据库时区那些事儿 - MySQL的时区处理
当JVM时区和数据库时区不一致的时候,会发生什么?这个问题也许你从来没有注意过,但是当把Java程序容器化的时候,问题就浮现出来了,因为目前几乎所有的Docker Image的时区都是UTC。本文探究了MySQL及其JDBC驱动对于时区的处理方式,并尝试给出最佳实践。
颇忒脱
2018/10/19
4.7K0
mysql计算时间
一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp -- (v4.0.6) ,localtimestamp() -- (v4.0.6) 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。 1.2 获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: mysql> select now(), sleep(3), now(); +---------------------+----------+---------------------+ | now() | sleep(3) | now() | +---------------------+----------+---------------------+ | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 | +---------------------+----------+---------------------+ mysql> select sysdate(), sleep(3), sysdate(); +---------------------+----------+---------------------+ | sysdate() | sleep(3) | sysdate() | +---------------------+----------+---------------------+ | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 | +---------------------+----------+---------------------+ 可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。 sysdate() 日期时间函数,一般情况下很少用到。 2. 获得当前日期(date)函数:curdate() mysql> select curdate(); +------------+ | curdate() | +------------+ | 2008-08-08 | +------------+ 其中,下面的两个日期函数等同于 curdate(): current_date() ,current_date 3. 获得当前时间(time)函数:curtime() mysql> select curtime(); +-----------+ | curtime() | +-----------+ | 22:41:30 | +-----------+ 其中,下面的两个时间函数等同于 curtime(): current_time() ,current_time 4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp() mysql> select utc_timestamp(), utc_date(), utc_time(), now() +---------------------+------------+------------+---------------------+ | utc_timestamp() | utc_date() | utc_time() | now() | +---------------------+------------+------------+----------
王念博客
2019/07/24
5.4K0
全网最全!彻底弄透Java处理GMT/UTC日期时间
本系列的目的是明明白白、彻彻底底的搞定日期/时间处理的几乎所有case。上篇文章 铺设所有涉及到的概念解释,例如GMT、UTC、夏令时、时间戳等等,若你还没看过,不仅强烈建议而是强制建议你前往用花5分钟看一下,因为日期时间处理较为特殊,实战必须基于对概念的了解,否则很可能依旧雾里看花。
YourBatman
2021/01/21
5.4K0
全网最全!彻底弄透Java处理GMT/UTC日期时间
万字长文带你从底层到实战了解Python中的time模块,从基础到进阶让你轻松掌握时间管理
time.time() 函数返回当前时间的时间戳(浮点数),即从1970年1月1日00:00:00(称为Unix纪元或Epoch时间)起至现在的秒数。
小白的大数据之旅
2024/11/20
4420
万字长文带你从底层到实战了解Python中的time模块,从基础到进阶让你轻松掌握时间管理
相关推荐
告别相差8小时问题,在 WordPress 正确使用 Date 和 Time
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验