如何在PHP中获取两个unix时间戳,并在第二个日期简化的月份中显示日期范围

如何在PHP中获取两个unix时间戳,并在第二个日期简化的月份中显示日期范围,php,date,Php,Date,使用PHP,我希望获得两个unix时间戳,如果它们跨越不同的月份,则显示日期: 2013年12月6日至2014年1月8日 但要显示这样的日期范围: 2013年12月6日至8日 当它们不跨越一个月或一年时 我当前的代码如下(显然这不符合我的要求)。希望其他人已经解决了这个问题,或者它隐藏在date()的某个地方,而我只是不知道 <?php // Date $startDate = get_post_meta( get_the_ID(), 'wvc_session_start_timestam

使用PHP,我希望获得两个unix时间戳,如果它们跨越不同的月份,则显示日期:

2013年12月6日至2014年1月8日

但要显示这样的日期范围:

2013年12月6日至8日

当它们不跨越一个月或一年时

我当前的代码如下(显然这不符合我的要求)。希望其他人已经解决了这个问题,或者它隐藏在date()的某个地方,而我只是不知道

<?php
// Date
$startDate = get_post_meta( get_the_ID(), 'wvc_session_start_timestamp', true );
$startDatePretty = date( 'F jS Y', $startDate);
$endDate = get_post_meta( get_the_ID(), 'wvc_session_end_timestamp', true );
$endDatePretty = date( 'F jS Y', $endDate);

$html .= '<div class="event-date">';
    // check if the custom field has a value

if( ! empty( $startDate ) ) {
    $html .= $startDatePretty;
} 

// check if the custom field has a value
if( ! empty( $endDate ) ) {
    if( $endDatePretty != $startDatePretty ) {
        $html .= ' - ' . $endDatePretty;
    }
 }

只需检查日期是否在同一个月内:

if(日期('Ym',$startDate)=日期('Ym',$endDate)){
回显日期('F jS-',$startDate),日期('jS,Y',$endDate),“\n”;
}如果(日期('Y',$startDate)=日期('Y',$endDate)){
回显日期('F jS-',$startDate),日期('F jS,Y',$endDate),“\n”;
}否则{
回显日期('F jS Y-',$startDate),日期('F jS Y',$endDate),“\n”;
}

我想我自己已经搞定了逻辑。这可能是一种更干净/更简单的方法,但在我优化它之前,这会让我现在想要什么

// Date
$startDate = get_post_meta( get_the_ID(), 'wvc_session_start_timestamp', true );
$endDate = get_post_meta( get_the_ID(), 'wvc_session_end_timestamp', true );

if (empty($startDate) || empty($startDate)) {
    $startDatePretty = date( 'F jS, Y', $startDate);
    $endDatePretty = date( 'F jS, Y', $endDate);
} else {
    $startDatePretty = date( 'F jS', $startDate);
    $endDatePretty = date( 'jS, Y', $endDate);
    // Different year
    if (date('Y',$startDate) != date('Y',$endDate)) 
        $startDatePretty .= date( ', Y', $startDate );

    // Different month
    if (date('F',$startDate) != date('F',$endDate))
        $endDatePretty = date( 'F', $endDate) . $endDatePretty;
}

更简单,但是如果月份不同,年份相同,我只希望第一个日期输出显示月份。即2014年1月1日至2月1日,而不是2014年1月1日至2014年2月1日。@jb510:如果语句,只需添加另一个
,请参见更新答案中的演示。