PHP에서 그 달의 마지막 날을 어떻게 얻을 수 있습니까?
주어진:
$a_date = "2009-11-23"
나는 2009-11-30을 원한다; 그리고 주어진
$a_date = "2009-12-23"
2009-12-31을 원합니다.
답변
t
주어진 날짜의 월에 일 수를 반환합니다 (에 대한 문서date
참조 ).
$a_date = "2009-11-23";
echo date("Y-m-t", strtotime($a_date));
답변
strtotime ()을 사용하는 코드는 2038 년 이후에 실패합니다. (이 스레드의 첫 번째 답변에 제공된대로) 예를 들어 다음을 사용하십시오.
$a_date = "2040-11-23";
echo date("Y-m-t", strtotime($a_date));
1970-01-31과 같이 대답합니다.
따라서 strtotime 대신 DateTime 함수를 사용해야합니다. 다음 코드는 2038 년 문제없이 작동합니다.
$d = new DateTime( '2040-11-23' );
echo $d->format( 'Y-m-t' );
답변
나는 이것이 조금 늦다는 것을 알고 있지만 DateTime 클래스 PHP 5.3+
를 사용하여 이를 수행하는보다 우아한 방법이 있다고 생각합니다 .
$date = new DateTime('now');
$date->modify('last day of this month');
echo $date->format('Y-m-d');
답변
내장 된 PHP 함수 cal_days_in_month ()도 있습니다 .
“이 함수는 지정된 달력에 대해 해당 월의 일 수를 반환합니다.”
http://php.net/manual/en/function.cal-days-in-month .
echo cal_days_in_month(CAL_GREGORIAN, 11, 2009);
// = 30
답변
이것은 작동해야합니다 :
$week_start = strtotime('last Sunday', time());
$week_end = strtotime('next Sunday', time());
$month_start = strtotime('first day of this month', time());
$month_end = strtotime('last day of this month', time());
$year_start = strtotime('first day of January', time());
$year_end = strtotime('last day of December', time());
echo date('D, M jS Y', $week_start).'<br/>';
echo date('D, M jS Y', $week_end).'<br/>';
echo date('D, M jS Y', $month_start).'<br/>';
echo date('D, M jS Y', $month_end).'<br/>';
echo date('D, M jS Y', $year_start).'<br/>';
echo date('D, M jS Y', $year_end).'<br/>';
답변
무엇이 잘못 되었나요-가장 우아한 것은 DateTime
나는 DateTime::createFromFormat
하나의 라이너 가 보이지 않는 것이 궁금합니다.
$lastDay = \DateTime::createFromFormat("Y-m-d", "2009-11-23")->format("Y-m-t");
답변
다음 달 1 일의 날짜를 만든 다음 strtotime("-1 day", $firstOfNextMonth)