当地时间显示 wp_next_scheduled
Show wp_next_scheduled in local time
我几乎尝试了所有方法.. 但是 wp_next_scheduled('hook_task')
总是 return 时间倒退 1 小时(我的本地时区是 UTC + 1,任务调度程序设置为每分钟 运行)。
我试试这个转换:
echo gmdate('Y-m-d H:i:s',wp_next_scheduled('hook_task'));
echo date('Y-m-d H:i:s',current_time(wp_next_scheduled('hook_task')));
echo date('Y-m-d H:i:s',current_time(wp_next_scheduled('hook_task'), 1));
但一切 return 19:05
当下一个函数 return 正确当地时间 20:05:
echo date('Y-m-d H:i:s',current_time("timestamp"));
date_default_timezone_get()
return UTC.
如何为下一个计划 运行 获取正确的本地日期时间 20:05?
测试
我已经根据您的回答进行了尝试:
1) 第一次测试
echo 'ACTUAL: ' . date('Y-m-d H:i:s',current_time("timestamp")) . '<br>';
$date = new DateTime("now", new DateTimeZone('Europe/Bratislava'));
echo 'WITH TZ: ' . $date->format('Y-m-d H:i:s') . '<br>';
$time = wp_next_scheduled('hook_task');
$date = new DateTime("@$time", new DateTimeZone('Europe/Bratislava'));
echo 'RESULT: ' . $date->format('Y-m-d H:i:s');
我也试过这个:$date = new DateTime("@$time", new DateTimeZone('Asia/Bangkok'));
但无论我设置为时区,它总是 return 相同的结果。
结果:
ACTUAL: 2015-12-12 22:45:10 // correct
WITH TZ: 2015-12-12 22:45:10 // correct
RESULT: 2015-12-12 21:45:39 // incorrect
2)正确解法
$time = wp_next_scheduled('hook_task');
echo 'RESULT2: ' . get_date_from_gmt( date('Y-m-d H:i:s', $time) );
结果:
RESULT2: 2015-12-12 22:45:39 // correct
Wordpress 每次执行任务时都使用 GMT 时间戳来重新安排任务,因此为了转换本地时间戳,您需要添加本地时间与 GMT 时间的偏移量。
幸运的是,有一个名为 get_date_from_gmt
的函数
Simply adds the value of the gmt_offset
option
代码如下:
$time = wp_next_scheduled('hook_task');
echo get_date_from_gmt( date('Y-m-d H:i:s', $time) );
我几乎尝试了所有方法.. 但是 wp_next_scheduled('hook_task')
总是 return 时间倒退 1 小时(我的本地时区是 UTC + 1,任务调度程序设置为每分钟 运行)。
我试试这个转换:
echo gmdate('Y-m-d H:i:s',wp_next_scheduled('hook_task'));
echo date('Y-m-d H:i:s',current_time(wp_next_scheduled('hook_task')));
echo date('Y-m-d H:i:s',current_time(wp_next_scheduled('hook_task'), 1));
但一切 return 19:05
当下一个函数 return 正确当地时间 20:05:
echo date('Y-m-d H:i:s',current_time("timestamp"));
date_default_timezone_get()
return UTC.
如何为下一个计划 运行 获取正确的本地日期时间 20:05?
测试
我已经根据您的回答进行了尝试:
1) 第一次测试
echo 'ACTUAL: ' . date('Y-m-d H:i:s',current_time("timestamp")) . '<br>';
$date = new DateTime("now", new DateTimeZone('Europe/Bratislava'));
echo 'WITH TZ: ' . $date->format('Y-m-d H:i:s') . '<br>';
$time = wp_next_scheduled('hook_task');
$date = new DateTime("@$time", new DateTimeZone('Europe/Bratislava'));
echo 'RESULT: ' . $date->format('Y-m-d H:i:s');
我也试过这个:$date = new DateTime("@$time", new DateTimeZone('Asia/Bangkok'));
但无论我设置为时区,它总是 return 相同的结果。
结果:
ACTUAL: 2015-12-12 22:45:10 // correct
WITH TZ: 2015-12-12 22:45:10 // correct
RESULT: 2015-12-12 21:45:39 // incorrect
2)正确解法
$time = wp_next_scheduled('hook_task');
echo 'RESULT2: ' . get_date_from_gmt( date('Y-m-d H:i:s', $time) );
结果:
RESULT2: 2015-12-12 22:45:39 // correct
Wordpress 每次执行任务时都使用 GMT 时间戳来重新安排任务,因此为了转换本地时间戳,您需要添加本地时间与 GMT 时间的偏移量。
幸运的是,有一个名为 get_date_from_gmt
的函数
Simply adds the value of the
gmt_offset
option
代码如下:
$time = wp_next_scheduled('hook_task');
echo get_date_from_gmt( date('Y-m-d H:i:s', $time) );