답변:
PHP 5.3이 작동해야합니다 ( "첫날"은 PHP 5.3에 도입되었습니다). 그렇지 않으면 위의 예가 유일한 방법입니다.
<?php
// First day of this month
$d = new DateTime('first day of this month');
echo $d->format('jS, F Y');
// First day of a specific month
$d = new DateTime('2010-01-19');
$d->modify('first day of this month');
echo $d->format('jS, F Y');
// alternatively...
echo date_create('2010-01-19')
->modify('first day of this month')
->format('jS, F Y');
PHP 5.4 이상에서는 다음과 같이 할 수 있습니다 :
<?php
// First day of this month
echo (new DateTime('first day of this month'))->format('jS, F Y');
echo (new DateTime('2010-01-19'))
->modify('first day of this month')
->format('jS, F Y');
간결한 방법을 선호하고 이미 연도 및 월을 숫자 값으로 사용하는 경우 date()
다음을 사용할 수 있습니다 .
<?php
echo date('Y-m-01'); // first day of this month
echo date("$year-$month-01"); // first day of a month chosen by you
->modify()
첫날 만 원한다면 통과 할 필요가 없습니다 . 다음 과 같이 DateTime 생성자에 직접 전달할 수 있습니다 . 그냥 ...'first day of this month'
$date = new DateTime('first day of this month')
여기 내가 사용하는 것이 있습니다.
매월 첫째 날 :
date('Y-m-01');
매월 마지막 날 :
date('Y-m-t');
date('Y-m-t');
.
date('w', '2015-05-01');
하면 실제 하루 대신 전날로 끝납니다. (이것은 올바른 5 대신 4를 줄 것입니다).
$monthStart = date('Y-m-01 00:00:00'); $monthEnd = date('Y-m-t 23:59:59');
이것은 당신이 필요로하는 모든 것입니다 :
$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/>';
strtotime('first day of this month', time())
첫날을 반환하며 시간은 현재와 동일합니다. 0:00시 첫날이 아닌 첫날이자 현재입니다. 이 문제를 해결합니다 strtotime('first day of this month 00:00:00', time())
.
현재이 솔루션을 사용하고 있습니다 :
$firstDay = new \DateTime('first day of this month');
$lastDay = new \DateTime('last day of this month');
내가 온 유일한 문제는 이상한 시간이 설정되고 있다는 것입니다. 검색 인터페이스에 올바른 범위가 필요했고 결과는 다음과 같습니다.
$firstDay = new \DateTime('first day of this month 00:00:00');
$lastDay = new \DateTime('first day of next month 00:00:00');
이 작업을 수행하는 미친 방법을 사용합니다
$firstDay=date('Y-m-d',strtotime("first day of this month"));
$lastDay=date('Y-m-d',strtotime("last day of this month"));
그게 다야
미운, (위의 메소드 호출을 사용하지 않음)이지만 작동합니다.
echo 'First day of the month: ' . date('m/d/y h:i a',(strtotime('this month',strtotime(date('m/01/y')))));
last day of {$month} {$year}
또는 last day of this month
둘 다 작동합니다. 그러나 $ month는 "Decemember"로 생각되는 "January"와 같은 달의 이름을 포함하는 문자열이어야합니다. 또는 간단하게 사용할 수 있습니다 date('Y-m-t');
.
나는 이것을 매일 cron 작업과 함께 사용하여 주어진 달의 첫날에 내 계열사에게 이메일을 보내야하는지 확인합니다. 다른 답변보다 몇 줄 더 있지만 바위처럼 단단합니다.
//is this the first day of the month?
$date = date('Y-m-d');
$pieces = explode("-", $date);
$day = $pieces[2];
//if it's not the first day then stop
if($day != "01") {
echo "error - it's not the first of the month today";
exit;
}
그 특별한 PHP 표현은 정신적으로 first day of ...
훌륭하지만 내 머리에서 나갔다.
그래서 나는 모든 IDE에 의해 자동 완성되는 몇 가지 기본 날짜 시간 추상화와 톤의 특정 구현을 구축하기로 결정했습니다. 요점은 어떤 종류의 것들을 찾는 것입니다. 마찬가지로, today
, now
, the first day of a previous month
,가 목록에 한 것들의 등 모든 이다 날짜 시간은. 따라서이라는 인터페이스 또는 추상 클래스 ISO8601DateTime
와이를 구현하는 특정 날짜 시간이 있습니다.
특정 경우의 코드는 다음과 같습니다.
(new TheFirstDayOfThisMonth(new Now()))->value();
이 방법에 대한 자세한 내용은 이 항목을 참조하십시오 .