wake-up-neo.com

Der erste Tag des aktuellen Monats in PHP unter Verwendung von date_modify als DateTime-Objekt

Ich kann Montag diese Woche bekommen mit:

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

Ich möchte den 1. dieses Monats mit der gleichen Leichtigkeit erreichen. Wie kann ich das erreichen?

Vielen Dank

128
pihentagy

Benötigt PHP 5.3, um zu funktionieren ("erster Tag von" wird in PHP 5.3 eingeführt). Ansonsten ist das obige Beispiel die einzige Möglichkeit, dies zu tun:

<?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');

In PHP 5.4 und höher können Sie Folgendes tun:

<?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');

Wenn Sie es vorziehen, dies kurz zu fassen, und bereits Jahr und Monat in numerischen Werten angeben, können Sie date() verwenden:

<?php
    echo date('Y-m-01'); // first day of this month
    echo date("$year-$month-01"); // first day of a month chosen by you
215
John Conde

Hier ist was ich benutze.

Erster Tag des Monats:

date('Y-m-01');

Ultimo:

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

Das ist alles was Sie brauchen:

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

Derzeit verwende ich diese Lösung:

$firstDay = new \DateTime('first day of this month');
$lastDay = new \DateTime('last day of this month');

Das einzige Problem, auf das ich gestoßen bin, ist, dass eine merkwürdige Zeit festgelegt wird. Ich brauchte den richtigen Bereich für unsere Suchoberfläche und am Ende bin ich dazu gekommen:

$firstDay = new \DateTime('first day of this month 00:00:00');
$lastDay = new \DateTime('first day of next month 00:00:00');
17

Ich benutze diesen Befehl auf eine verrückte Weise

$firstDay=date('Y-m-d',strtotime("first day of this month"));
$lastDay=date('Y-m-d',strtotime("last day of this month"));

Das ist alles

In PHP 5.2 können Sie verwenden:

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

Hässlich (und nutzt deinen Methodenaufruf oben nicht), funktioniert aber

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

Sie können es so machen:

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

Ich benutze dies mit einem täglichen Cron-Job, um zu überprüfen, ob ich am ersten Tag eines Monats eine E-Mail an meine Partner senden sollte. Es sind ein paar Zeilen mehr als bei den anderen Antworten, aber solide wie ein Stein.

//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

mit der date-Methode sollten wir in der Lage sein, das Ergebnis zu erhalten . dh; Datum ('N/D/l', mktime (0, 0, 0, Monat, Tag, Jahr));

Zum Beispiel

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