You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为WordPress日历日期选择器转换日期格式

解决WordPress事件日期与Datepicker格式不匹配的问题

首先看你的代码,问题出在PHP生成日期格式的部分——你现在输出的是'r'格式(RFC 2822标准,比如Thu, 20 May 2020 00:00:00 +0000),而Datepicker需要的是MM/DD/YYYY(比如05/20/2020)这种美式日期格式。

直接修改日期格式生成逻辑

只需要把PHP里的date_format的格式参数从'r'改成'm/d/Y'就行:

  • m:两位数字的月份(01-12)
  • d:两位数字的日期(01-31)
  • Y:四位数字的年份(比如2020)

修改后的PHP数组填充部分代码:

$my_array[] = array( 
    'Title' => $post->post_title, 
    'Date' => date_format(date_create(get_field('data-event')), 'm/d/Y')
);

简化代码的小技巧

其实你不需要把时间转成@开头的Unix时间戳再创建Date对象,直接把get_field('data-event')的结果传入date_create就可以(假设ACF的data-event字段存储的是标准日期格式,比如Y-m-d或者可被PHP识别的日期字符串)。如果更想简化,甚至可以用date()函数直接处理:

'Date' => date('m/d/Y', strtotime(get_field('data-event')))

把PHP数组转为符合JS格式的数组

为了避免手动拼接JS代码出错,推荐用json_encode直接把PHP数组转成合法的JS对象数组:

// 先完成数组填充...
echo '<script>var events = ' . json_encode($my_array) . ';</script>';

这样生成的events数组会自动和你示例中的JS格式完全一致,每个对象的Date字段就是"05/20/2020"这样的字符串,直接可以用new Date()包裹使用(或者有些Datepicker组件支持直接传入这种格式的字符串)。

完整的修改后代码示例

<?php 
$my_array = array(); 
// the query 
$args=array( 
    'post_type' => 'eventos', 
    'order'=>'ASC'
); 
$posts = get_posts( $args ); 
if ( $posts ) { 
    foreach ( $posts as $post ) { 
        $my_array[] = array( 
            'Title' => $post->post_title, 
            'Date' => date('m/d/Y', strtotime(get_field('data-event'))), 
        ); 
    } 
} 
// 输出为JS变量
echo '<script>var events = ' . json_encode($my_array) . ';</script>';
?>

如果你的Datepicker需要的是Date对象而不是字符串,还可以在JS里遍历转换:

events.forEach(event => {
    event.Date = new Date(event.Date);
});

内容的提问来源于stack exchange,提问作者Eduardo Pedralli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:57:51