无法格式化日期以放入事件日历中

时间:2019-03-25 作者:Zaheer Abbas

我想要实现的是通过get\\u post\\u meta获取日期,并将其推送到数组中,然后将其传递到js代码中。但当我使用下面的代码时,循环中的第一篇帖子的日期会被格式化,而其他帖子的日期显示为1970年1月1日。工作时间为5小时,如有任何帮助,将不胜感激。

这是wordpress的代码。

 <?php 

function bpem_event_calendar_tab() {

global $bp;



if (isset($bp->groups->current_group->slug)) {

bp_core_new_subnav_item(array(

\'name\' => \'Event Calendar\',

\'slug\' => \'events-calendar\',

\'parent_slug\' => $bp->groups->current_group->slug,

\'parent_url\' => bp_get_group_permalink($bp->groups->current_group),

\'screen_function\' => \'bpem_event_calendar_roup_show_screen\',

\'position\' => 90));

}

}



add_action(\'wp\', \'bpem_event_calendar_tab\');



function bpem_event_calendar_roup_show_screen() {



//add_action(\'bp_template_title\', \'ev_new_group_show_screen_title\');

add_action(\'bp_template_content\', \'bpem_event_calendar_group_show_screen_content\');



$templates = array(\'groups/single/plugins.php\', \'plugin-template.php\');

if (strstr(locate_template($templates), \'groups/single/plugins.php\')) {

bp_core_load_template(apply_filters(\'bp_core_template_plugin\', \'groups/single/plugins\'));

} else {

bp_core_load_template(apply_filters(\'bp_core_template_plugin\', \'plugin-template\'));

}

}



/*function ev_new_group_show_screen_title() {

echo \'New Tab Title\';

}*/



function bpem_event_calendar_group_show_screen_content() {
$group_name =  sanitize_title(bp_get_current_group_name());
$event_data = array();

$args = array(
\'post_type\'      => \'bpem_event\',
\'posts_per_page\' => -1,
/*   \'meta_key\'          => \'evn_group_slug\',
\'meta_value\'     => $group_name,*/

);
$i=0;
$event_query = new WP_Query( $args );
if ( $event_query->have_posts() ) : while ( $event_query->have_posts() ) :       
$event_query->the_post();

$start_date = get_post_meta( get_the_id(), \'evn_startDate\');
//print_r($start_date);
$start_d = date("Y-m-d", strtotime($start_date[$i]));
//echo $start_d.\'<br>\';

$start_time =   get_post_meta(get_the_id(), \'evn_startTime\');
$start_t    =   date("H:i:s", strtotime($start_time[$i]));


$end_date = get_post_meta( get_the_id(), \'evn_endDate\');
//print_r($end_date);
$end_d = date("Y-m-d", strtotime($end_date[$i]));
//echo $end_d;

$end_time = get_post_meta(get_the_id(), \'evn_endTime\');
$end_t = date("H:i:s", strtotime($end_time[$i]));


$event_data[] = array(
\'title\'         =>  get_the_title(),
\'start\'         =>  $start_d.\'T\'.$start_t,
\'end\'           =>  $end_d.\'T\'.$end_t
//\'end_date\'        => $enddate[0]
);
$i++;
endwhile; 
wp_reset_postdata(); 
endif;
$json = json_encode($event_data);
print_r($json);

echo "<div id=\'bpem-calendar\'></div>";

?>

<script type="text/javascript">

jQuery(document).ready(function() {
var todayDate = jQuery.datepicker.formatDate(\'yy-mm-dd\', new Date());
jQuery(\'#bpem-calendar\').fullCalendar({
header: {
left: \'prev,next today\',
center: \'title\',
right: \'month,agendaWeek,agendaDay\'
},
defaultDate: todayDate,
businessHours: true, // display business hours
editable: false,
events:<?php echo json_encode($event_data); ?>
});

});

</script>

<?php 

} ?>
这是输出。

[{“title”:“JSON专家会议”,“start”:“2019-03-25T07:00:00”,“end”:“2019-03-27T09:30:00”},{“title”:“WordPress Meetup Karachi”,“start”:“1970-01-01T00:00:00”,“end”:“1970-01-01T00:00:00”},{“title”:“WP Meetup Karachi”,“start”:“1970-01-01T00:00:00”,“end”:“1970-01-01T00:00:00”},{“title”:“JQuery大师会议”,“start”:“1970-01-01T00:00:00”-01-01T00:00:00,“结束”:“1970-01-01T00:00:00”}]

1 个回复
最合适的回答,由SO网友:MikeNGarrett 整理而成

我想你不想$start_date[$i]. 你可能正在寻找$start_date[0]. 这就是为什么你只得到第一个结果,而没有得到下面的结果。1970-01-01T00:00:00 是大纪元时间,因为strtotime() 无法转换给定的日期,因此默认情况下它会返回该日期。

我想看看什么$start_date 看起来像。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。