2008-09-04 58 views

回答

64
$first = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)); 
$last = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year)); 

請參閱PHP文檔中的date()

+1

? – FosAvance 2013-12-09 22:13:44

5

第一天總是YYYY-MM-01,不是嗎?例如:date("Y-M-d", mktime(0, 0, 0, 8, 1, 2008))

最後一天是下個月的第一天的前一天:

$date = new DateTime("2008-09-01"); 
$date->modify("-1 day"); 
echo $date->format("Y-m-d"); 
3

月份的第一天總是1 因此,這將成爲

YYYY-MM-01 

的最後一天可以計算爲:

<?php 
    $num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31 
    echo "There was $num days in August 2003"; 
?> 
2

好的,首先是很容易的。

date ('Y-m-d', mktime(0,0,0,MM,01,YYYY)); 

最後是有點棘手,但不是很多。

date ('Y-m-d', mktime(0,0,0,MM + 1,-1,YYYY)); 

如果我記得我的PHP日期正確的東西......

**編輯 - 爾加!毆打它的一萬倍左右...

編輯帕特:

最後一天應該是

date ('Y-m-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1 
0

順便說@ZombieSheep解決方案

date ('Y-m-d', mktime(0,0,0,$MM + 1,-1,$YYYY)); 

不起作用它應該是

date ('Y-m-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1 

當然@MichałSłaby接受的解決方案是最簡單的。

0

只是爲了驗證,我沒有錯過任何細節:

$startDay = 1; 

if (date("m") == 1) { 
    $startMonth = 12; 
    $startYear = date("Y") - 1; 

    $endMonth = 12; 
    $endYear = date("Y") - 1; 
} 
else { 
    $startMonth = date("m") - 1; 
    $startYear = date("Y"); 

    $endMonth = date("m") - 1; 
    $endYear = date("Y"); 
} 

$endDay = date("d") - 1; 

$startDate = date('Y-m-d', mktime(0, 0, 0, $startMonth , $startDay, $startYear)); 
$endDate = date('Y-m-d', mktime(0, 0, 0, $endMonth, $endDay, $endYear)); 
2
<?php 
echo "Month Start - " . $monthStart = date("Y-m-1") . "<br/>"; 
$num = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); 
echo "Monthe End - " . $monthEnd = date("Y-m-".$num); 
?> 
0

用PHP做到這一點,最簡單的方法是

$dateBegin = strtotime("first day of last month"); 
$dateEnd = strtotime("last day of last month"); 

echo date("MYDATEFORMAT", $dateBegin); 
echo "<br>";   
echo date("MYDATEFORMAT", $dateEnd); 

或過去一週

if (date('N', time()) == 7) { 
$dateBegin = strtotime("-2 weeks Monday"); 
$dateEnd = strtotime("last Sunday"); 
} else { 
$dateBegin = strtotime("Monday last week"); 
$dateEnd = strtotime("Sunday last week"); 
} 

還是去年

$dateBegin = strtotime("1/1 last year"); 
$dateEnd = strtotime("12/31 this year"); 
0

試試這個得到當月的天數:

$numdays = date('t', mktime(0, 0, 0, $m, 1, $Y)); 
0

例;我想獲得本月的第一天和最後一天。

$month = (int) date('F'); 
$year = (int) date('Y'); 

date('Y-m-d', mktime(0, 0, 0, $month + 1, 1, $year)); //first 
date('Y-m-d', mktime(0, 0, 0, $month + 2, 0, $year)); //last 

當你在日期2015年1月9日運行此例如,第一個和最後一個值將依次是;

2015-01-01 
2015-01-31 

經過測試。

0

here(get next month last day)這是標記爲重複,所以我不能在那裏添加評論,但人們可以從那裏得到壞的答案。

正確的下個月的最後一天:

echo ((new DateTime(date('Y-m').'-01'))->modify('+1 month')->format('Y-m-t')); 

正確下個月的第一天:

echo ((new DateTime(date('Y-m').'-01'))->modify('+1 month')->format('Y-m-01')); 

這樣的代碼會從一月份提供三月,所以這不是什麼可以預料。

echo ((new DateTime())->modify('+1 month')->format('Y-m-t'));

相關問題