2010-09-28 27 views
3

假設你有以下日期範圍:如何兩個日期合併成一個正常的人類可讀的日期範圍

2010-04-10 - 2010-04-15 

作爲一個人,我可能會這樣寫爲April 10 - 15, 2010,或者類似的東西。不知道是否有定義正確的寫作範圍的方式,但無論如何,如果你要做這樣的事情,你會怎麼做?我什至不知道從哪裏開始...

我想這樣做,這樣的日期範圍可能可以更緊湊,更易於閱讀,也更好看。

+1

需要一點點信息。你只是想顯示日期或操縱它們?你在使用一個日期(範圍)還是兩個單獨的日期?如果它是兩個,那麼我想它只是將它們格式化爲你想要的味道,然後簡單地將它們打印在一起? – aLostMonkey 2010-09-28 22:50:05

+0

是的,這只是一個格式化的情況。像'函數格式($ date1,$ date2)'或其他。 – Svish 2010-09-29 10:05:30

+1

失望沒有「使用這個圖書館」的答案仍然是:/ – lkraav 2017-08-03 13:26:02

回答

5

我不認爲有一個明確的方法來做,基本上它只是邏輯。嘗試用純文本寫下你認爲規則應該用一些例子。就像你給的例子是一個很好的例子。如果他們是不同的月份呢?如果是2005年4月到2007年4月,那是2005年4月?

一旦你有了純文本規則,代碼將變得簡單。這只是決定如何格式化它。

+1

絕對正確。這不是一個編碼問題。這是一個規範問題。 – wallyk 2010-09-28 23:15:59

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;