来自2个自定义域的日期计算

时间:2012-10-30 作者:Diego Meozzi

我们正在努力找到一种方法来计算保存为WP上自定义字段的两个日期之间的时间差。我们实际上使用了两个不同的插件:

(a)Easy Content Types

(b)Advanced post list

对于第一个,我们创建了一系列自定义字段,其中包含开始(ecpt\\u data-consegna)和结束(ecpt\\u data-dismissione)日期,我们希望找到一种方法,在通过高级Post列表插件生成的表的单元格中显示这些日期之间的时差(显示为XX年、XX月、XX天)。请注意,如果缺少播种日期,则应计算开始日期和当前日期(现在)之间的差值。

在与这两个插件的开发人员聊了很久之后,我们陷入了停顿。目前,我们已经开发了一个自定义PHP函数来处理日期计算,如下所示:

function calculateDiff() {
$start_date = new DateTime(get_post_meta( get_the_ID(), \'ecpt_data-consegna\', true ));
$since_start = $start_date->diff(new DateTime(get_post_meta( get_the_ID(), \'ecpt_data-dismissione\', true )));

if($since_start->days == 0) {
        $since_start = $start_date->diff(new DateTime());
}

return $since_start->y . \' years, \' . $since_start->m . \' months, \' . $since_start->d . \' days\'; }
但当我们把这个APL短代码放在一个APL生成的单元格中时:

<td>[php_function name="calculateDiff"]</td>
结果是一个断开的网页,在生成表本身之前被切断。当我们尝试使用此代码时:

<td><?php echo calculateDiff();?></td>
结果是一个空白单元格。

我们还尝试直接调用该函数(在APL之外),结果始终为空。所以一定是什么地方出了问题。。。

任何帮助都将不胜感激!

1 个回复
SO网友:Shelly

我不知道这会有多大帮助,但当我进行日期/时间比较时,我总是必须首先将它们转换为UNIX时间戳(将日期/时间转换为数字,可以将其比较为小于/大于/等于下一个数字),然后在对差分进行排序后,将其转换回date()。

一个简单的示例(不是您的代码,而是几年前我为客户做的一个快速操作)是这样做的:

$today = date(\'d-m-Y\');                       // today\'s date
$today = strtotime($today);                    // UNIX conversions  
如果不先将它们转换到UNIX,我就很难进行日期比较。

结束

相关推荐

如何在前端使用wp_update_post和AJAX

我一直在努力尝试在登录后在每篇帖子上实现一个前端帖子编辑器“侧栏”。您可以通过一个测试帖子看到这里发生了什么:http://www.bennettfeely.com/test-post/. 在我让它工作后,它将受到限制,因此,当然,只有具有权限的用户才能访问前端编辑器。以下是我目前使用的jQuery/Ajax的重要部分:var post_data = $(\"#editor-post-form\").serialize(); .ajax({ type: \'POST\', &