[php] date_modify를 DateTime 객체로 사용하여 PHP에서 현재 달의 첫날

이번 주 월요일에 다음을 얻을 수 있습니다.

$monday = date_create()->modify('this Monday');

나는 이번 달 1 일과 같은 편을 원합니다. 어떻게하면 되나요?



답변

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


답변

여기 내가 사용하는 것이 있습니다.

매월 첫째 날 :

date('Y-m-01');

매월 마지막 날 :

date('Y-m-t');


답변

이것은 당신이 필요로하는 모든 것입니다 :

$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/>';


답변

현재이 솔루션을 사용하고 있습니다 :

$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"));

그게 다야


답변

PHP 5.2에서는 다음을 사용할 수 있습니다.

<? $d = date_create();
print date_create($d->format('Y-m-1'))->format('Y-m-d') ?>


답변

미운, (위의 메소드 호출을 사용하지 않음)이지만 작동합니다.

echo 'First day of the month: ' . date('m/d/y h:i a',(strtotime('this month',strtotime(date('m/01/y')))));