计算两个自定义字段值日期之间的天数

时间:2017-06-12 作者:joelybristol

我试图计算通过前端日期选择器(重力表单)输入的两个后期自定义字段值之间的天数差。

下面是我两次约会的简化版本:

 <?php $date1 = get_field(\'date_start\', false, false);
 $date1 = new DateTime($date1); ?>

 <p><?php echo $date1->format(\'j M\'); ?></p>



 <?php $date2 = get_field(\'date_fin\', false, false);
 $date2 = new DateTime($date2); ?>

 <p><?php echo $date2->format(\'j M\'); ?></p>
我需要计算并输出上述输出日期之间的日差。

假设我有如下输出:

6月3日

6月10日

我希望能够创建一个变量或某种类型的php输出,它会说:

\'晚7天\'

如果差值为零,那么让事情变得更加复杂,我想说:

\'准时\'

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

我们可以使用human_time_diff() 给我们一个可读的时差。首先,我们需要看看日子是否一样:

$date1 = get_field( \'date_start\', false, false );
$date1 = new DateTime( $date1 );
$unix1 = strtotime( $date1->format( \'Y-m-d\' ) );

$date2 = get_field( \'date_fin\', false, false );
$date2 = new DateTime( $date2 )
$unix2 = strtotime( $date2->format( \'Y-m-d\' ) );

if( 0 === ( $unix1 - $unix2 ) ) {
    echo \'On Time!\';
} elseif( $unix2 < $unix1 ) {
    echo human_time_diff( $unix1, $unix2 ) . \' Early\';
} else {
    echo human_time_diff( $unix1, $unix2 ) . \' Late\';
}
一些输出示例:

日期1=6月3日
日期2=6月3日
Output: 准时

日期1=6月10日
日期2=6月13日
Output: 迟到3天

日期1=6月10日
日期2=6月3日
Output: 提前一周

如果我们想显示实际天数而不是weekmonthhuman_time_diff() 我们可以从最小值中减去最大值,除以WordPress constant variable DAY_IN_SECONDS. 然后我们将通过_n() function 显示复数或单数。

if( 0 === ( $unix1 - $unix2 ) ) {
    echo \'On Time!\';
} elseif( $unix2 < $unix1 ) {
    $days = ( intval( $unix1 - $unix2 ) / DAY_IN_SECONDS );
    printf( _n( \'%s day early\', \'%s days early\', $days ), $days );
} else {
    $days = ( intval( $unix2 - $unix1 ) / DAY_IN_SECONDS );
    printf( _n( \'%s day late\', \'%s days late\', $days ), $days );
}

结束

相关推荐

通过php激活单个插件

好的,我知道以前有人问过这个问题,但我想知道我能做到这一点的最有效和最干净的方法。我所拥有的是通过serverpilot自动提供的,它在digital ocean服务器上为客户端安装WordPress我遇到的问题是:我想激活一个插件,在客户端第一次使用WordPress时帮助他。我遇到的问题是,一旦脚本将文件添加到插件目录,我就无法让脚本访问他们的DB来激活插件。我想通过PHP激活插件。到目前为止,这个解决方案看起来不错,但我想知道这是否是激活我正在放入插件目录的插件的最简单和最干净的方法function