web-dev-qa-db-ja.com

DateTimeオブジェクトとしてdate_modifyを使用したPHPの現在の月の最初の日

今週の月曜日は次の方法で取得できます。

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

今月の1日も同じように簡単に取得したいと思います。どうすればそれを達成できますか?

137
pihentagy

動作するには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
223
John Conde

これが私が使用するものです。

月の最初の日:

date('Y-m-01');

月の最終日:

date('Y-m-t');
293
Etienne Dupuis

これはあなたが必要とするすべてです:

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

現在、私はこのソリューションを使用しています:

$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');
19

私はこれを行うためにクレイジーな方法を使用し、このコマンドを使用しています

$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') ?>
5
pihentagy

Glyい(上記のメソッド呼び出しは使用しません)が動作します:

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

次のようにできます:

$firstday = date_create()->modify('first day January 2010');
2
Thomas

これを毎日の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;

}
0
Craig Edmonds

dateメソッドを使用すると、結果を取得できるはずです。すなわち; date( 'N/D/l'、mktime(0、0、0、月、日、年));

例えば

echo date('N', mktime(0, 0, 0, 7, 1, 2017));   // will return 6
echo date('D', mktime(0, 0, 0, 7, 1, 2017));   // will return Sat
echo date('l', mktime(0, 0, 0, 7, 1, 2017));   // will return Saturday
0
Jacob Nelson