首页 > 解决方案 > 计算注册日期和 1 年之间的天数

问题描述

我正在尝试计算差异并将其输出如下:“您的会员资格将在 XXX 天后续订。”

这是我正在使用的代码->

add_shortcode( 'membership', 'pren_info');
function pren_info() {
    $pren = wp_get_current_user();
    $first_name = $pren->first_name;
    $last_name = $pren->last_name;
    $date_format = 'j M Y H:i';

    $today_obj      = new DateTime( date( 'Y-m-d', strtotime( 'today' ) ) );            // Get today's Date Object
    $register_date  = get_the_author_meta( 'user_registered', get_current_user_id() );  // Grab the registration Date
    $registered_obj = new DateTime( date( 'Y-m-d', strtotime( $register_date ) ) );     // Get the registration Date Object
    $interval_obj   = $today_obj->diff( $registered_obj );                             // Retrieve the difference Object
    $renewal_date = date('Y-m-d',strtotime('+1 year',$register_date));
    $datediff = floor(strtotime($renewal_date)/(60*60*24)) - floor(strtotime($register_date)/(60*60*24));

    echo '<div class="pren-hello"><b>Hi '.$first_name.'!</b></div>';

    if( $interval_obj->days > 1 ) {             // The most commonly hit condition at the top
    echo __( "Your account was registered {$interval_obj->days} days ago as a member.", "theme" );

    } elseif( 0 == $interval_obj->days ) {      // IF they registered today
    echo __( 'Your account was registered today.', 'theme' );

    } elseif( 1 == $interval_obj->days ) {      // IF they registered yesterday
    echo __( 'Your account was registered yesterday.', 'theme' );

    } else {                                    // The off-chance we have less than zero
    echo __( 'Please come back tomorrow for an update.', 'theme' );
    }

    echo '<div class="pren-info">In '.$datediff.' days, your membership needs to be renewed.</div>';
}

简码在显示名称和显示用户注册的天数方面起作用,但我无法工作的是:

我需要计算“从用户注册之日起1年以及该日期与他们注册日期之间的天数差异”的时间。

这“很难”解释 :) 这有意义吗?

标签: phpwordpress

解决方案


您可以使用它来计算两个日期之间的差异。它将返回一个整数。

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $interval = date_diff($datetime1, $datetime2);

    return $interval->format($differenceFormat);

}

推荐阅读