2014-06-30 120 views

回答

0
$date = date('F',strtotime($startDate)); 

對於全月表示(即Januaray,日等)

$date = date('M',strtotime($startDate)); 

對於縮寫......(即一月,二月,三月)

REFERENCE

如果您想要根據兩個日期來回應那些月份。

$d = "2014-03-01"; 
$startDate = new DateTime($d); 
$endDate = new DateTime("2014-05-01"); 

function diffInMonths(DateTime $date1, DateTime $date2) 
{ 
    $diff = $date1->diff($date2); 
    $months = $diff->y * 12 + $diff->m + $diff->d/30; 
    return (int) round($months); 
} 

    $t = diffInMonths($startDate, $endDate); 

    for($i=0;$i<$t+1;$i++){ 
    echo date('F',strtotime($d. '+'.$i.' Months')); 
    } 

PHP SANDBOX EXAMPLE

1

一個快速的解決方案是,每天分析和檢查月份:

$startDate = "2014-03-01"; 
$endDate = "2014-05-25"; 

$start = strtotime($startDate); 
$end = strtotime($endDate); 

$result = array(); 
while ($start <= $end) 
{ 
    $month = date("M", $start); 

    if(!in_array($month, $result)) 
     $result[] = $month; 

    $start += 86400; 
} 

print_r($result); 

我相信這是可以做到多少有效的新的OOP(DateTime對象)的方式,但是這是速度快,如果您需要使其工作,則無需大腦。

+0

感謝這有助於。 –

5

爲此PHP提供了DatePeriod對象。看看下面的例子。

$period = new DatePeriod(
    new DateTime('2014-03-01'), 
    DateInterval::createFromDateString('1 month'), 
    new DateTime('2014-05-25') 
); 

foreach ($period as $month) { 
    echo strftime('%B', $month->format('U')); 
} 
+0

最佳答案....就在這裏:) – KyleK

+0

我不明白爲什麼人們總是喜歡複雜而難以理解的解決方案。新來PHP的人會沉迷於面向對象的方式比搖滾更快。 –

+0

@ rm-rf OOP讓你的生活變得更輕鬆,問題變得越複雜,使用面向對象的解決就越容易。所以請永遠不要使用面向對象的建議,當涉及初學者時更多 – giorgio

0
<?php 
$startDate = "2014-03-01"; 
echo date('F',strtotime($startDate)); 
? 
+1

請解釋而不是張貼您的代碼。我們在這裏教人們要做的更好。給一個人一條魚... – DavidG

相關問題