Php 如何将两个日期合并到正常的人类可读日期范围中

Php 如何将两个日期合并到正常的人类可读日期范围中,php,date,formatting,Php,Date,Formatting,假设您有以下日期范围: 2010-04-10 - 2010-04-15 作为一个人,我可能会把它写成2010年4月10-15日之类的东西。不确定是否有一种定义正确的方法来编写这样的范围,但无论如何,如果你要这样做,你会怎么做?我甚至不知道从哪里开始 我想这样做,以便日期范围可能更紧凑、更易于阅读,而且外观也更好。我认为没有明确的方法,基本上这只是逻辑。试着用纯文本写下你认为规则应该是什么,并举例说明。你举的例子很好。如果是不同的月份呢?如果是2005年4月到2007年4月,那是2005年4月到

假设您有以下日期范围:

2010-04-10 - 2010-04-15
作为一个人,我可能会把它写成2010年4月10-15日之类的东西。不确定是否有一种定义正确的方法来编写这样的范围,但无论如何,如果你要这样做,你会怎么做?我甚至不知道从哪里开始


我想这样做,以便日期范围可能更紧凑、更易于阅读,而且外观也更好。

我认为没有明确的方法,基本上这只是逻辑。试着用纯文本写下你认为规则应该是什么,并举例说明。你举的例子很好。如果是不同的月份呢?如果是2005年4月到2007年4月,那是2005年4月到2007年4月吗


一旦你有了明文规则,代码就会变得简单。这只是决定如何格式化它。

这是我在项目中使用的示例代码。希望能有帮助

    $start_date = strtotime('2012-11-01');  
    $end_date = strtotime('2012-11-02');


    if ($end_date != '') {  
        $year1 = date('Y', $start_date);  
        $year2 = date('Y', $end_date);  
        $month1 = date('m', $start_date);  
        $month2 = date('m', $end_date);     

        if ($start_date < $end_date) {  
            if ($year1 != $year2) {  
                $holiday_date = date('F j, Y', $start_date) . ' to ' . date('F j, Y', $end_date);  
            }  
            else {  
                if ($month1 != $month2) {  
                          $holiday_date = date('F j', $start_date) . '&ndash;' . date('F j', $end_date) . ', '. date('Y', $end_date);  
                }  
                else {  
                          $holiday_date = date('F j', $start_date) . '&ndash;' . date('j', $end_date) . ', '. date('Y', $end_date);  
                }  
            }  
        }  
        else {  
                $holiday_date = 'Invalid date range.';  
        }  
    }  
    else {  
            $holiday_date = date('F j, Y', $start_date);  
    }    
    echo $holiday_date;  
$start_date=strottime('2012-11-01');
$end_date=strottime('2012-11-02');
如果($end_date!=''){
$year1=日期($Y',$start\u日期);
$year2=日期('Y',$end_日期);
$month1=日期('m',$start\u日期);
$month2=日期('m',$end_日期);
如果($start_date<$end_date){
如果($year1!=$year2){
$holiday_date=日期($fj,Y',$start_date)。'to'。日期($fj,Y',$end_date);
}  
否则{
如果($month1!=$month2){
$holiday_date=日期($fj',$start_date)。'&ndash;'.date($fj',$end_date)。','.date($Y',$end_date);
}  
否则{
$holiday_date=日期('fj',$start_date)。'&ndash;'.date('j',$end_date)。','.date('Y',$end_date);
}  
}  
}  
否则{
$holiday_date='无效的日期范围';
}  
}  
否则{
$holiday\u date=日期('F j,Y',$start\u date);
}    
echo$holiday_日期;

需要更多的信息。您只是想显示日期还是操纵日期?您使用的是一个日期(范围)还是两个单独的日期?如果是两个,那么我想这只是一个格式化的例子,根据你想要的口味,然后简单地将它们打印在一起?是的,这只是一个格式化的例子。像
函数格式($date1,$date2)
之类的。失望的是没有“使用这个库”的答案:/绝对正确。这不是编码问题。这是一个规格问题。