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

时间:2010-09-28 22:37:04

标签: php date formatting

假设您有以下日期范围:

2010-04-10 - 2010-04-15

作为一个人,我可以将其写成April 10 - 15, 2010,或类似的东西。不确定是否有一种定义正确的方式来编写这样的范围,但无论如何,如果你要做那样的事情,你会怎么做?我甚至不确定从哪里开始...

我想这样做,以便日期范围可能更紧凑,更容易阅读,也更好看。

2 个答案:

答案 0 :(得分:5)

我认为没有明确的方法,基本上它只是逻辑。尝试用纯文本写下你认为规则应该是一些例子。就像你给出的例子一样好。如果他们的月份不一样怎么办?如果是2005年4月至2007年4月,那是2005年4月至2007年4月的情况吗?

一旦获得纯文本规则,代码就会很简单。这只是决定你想如何格式化它。

答案 1 :(得分:3)

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

    $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;