Wie kann ich mit PHP das erste und letzte Datum in einem Monat finden?

82

Wie kann ich mit PHP das erste und letzte Datum in einem Monat finden? Zum Beispiel ist heute der 21. April 2010; Ich möchte den 1. April 2010 und den 30. April 2010 finden.

Karthik
quelle
Mögliches Duplikat: stackoverflow.com/questions/1686724/…
Oki Erie Rinaldi

Antworten:

205

Am einfachsten ist die Verwendung date, mit der Sie fest codierte Werte mit Werten mischen können, die aus einem Zeitstempel extrahiert wurden. Wenn Sie keinen Zeitstempel angeben, wird das aktuelle Datum und die aktuelle Uhrzeit angenommen.

// Current timestamp is assumed, so these find first and last day of THIS month
$first_day_this_month = date('m-01-Y'); // hard-coded '01' for first day
$last_day_this_month  = date('m-t-Y');

// With timestamp, this gets last day of April 2010
$last_day_april_2010 = date('m-t-Y', strtotime('April 21, 2010'));

date()Durchsucht die angegebene Zeichenfolge 'm-t-Y'nach bestimmten Symbolen und ersetzt sie durch Werte aus dem Zeitstempel. Wir können diese Symbole also verwenden, um die gewünschten Werte und Formatierungen aus dem Zeitstempel zu extrahieren. In den obigen Beispielen:

  • Y gibt Ihnen das 4-stellige Jahr ab dem Zeitstempel ('2010')
  • m gibt Ihnen den numerischen Monat ab dem Zeitstempel mit einer führenden Null ('04')
  • t gibt Ihnen die Anzahl der Tage im Monat des Zeitstempels an ('30')

Damit können Sie kreativ sein. Zum Beispiel, um die erste und letzte Sekunde eines Monats zu erhalten:

$timestamp    = strtotime('February 2012');
$first_second = date('m-01-Y 00:00:00', $timestamp);
$last_second  = date('m-t-Y 12:59:59', $timestamp); // A leap year!

Weitere Symbole und weitere Details finden Sie unter http://php.net/manual/en/function.date.php .

Nathan Long
quelle
3
Wenn ich hier nur Informationen hinzufüge, hatte ich Probleme, das Datum mit diesem Format wieder in einen Unix-Zeitstempel zu konvertieren. Es wurde behoben, indem das Format 'dmY' anstelle von 'mdY' verwendet wurde. Auch die letzte Sekunde ist '23: 59: 59 'anstelle von '12 : 59: 59 '..
Syed Qarib
26

Einfache Sache

  • Y - Eine vollständige numerische Darstellung eines Jahres mit 4 Ziffern
  • m - Numerische Darstellung eines Monats mit führenden Nullen
  • t - Anzahl der Tage im angegebenen Monat

Referenz - http://www.php.net/manual/en/function.date.php

<?php
    echo 'First Date    = ' . date('Y-m-01') . '<br />';
    echo 'Last Date     = ' . date('Y-m-t')  . '<br />';
?>
Siva Kranthi Kumar
quelle
17

Mit der Datumsfunktion können Sie ermitteln, wie viele Tage in einem Monat vorhanden sind.

// Get the timestamp for the date/month in question.
$ts = strtotime('April 2010');

echo date('t', $ts); 
// Result: 30, therefore, April 30, 2010 is the last day of that month.

Hoffentlich hilft das.

EDIT: Nachdem ich Luis 'Antwort gelesen hatte, kam mir der Gedanke, dass Sie sie im richtigen Format (JJ-mm-TT) haben möchten. Es mag offensichtlich sein, tut aber nicht weh zu erwähnen:

// After the above code
echo date('Y-m-t', $ts); 
Henrik L.
quelle
11

Dies gibt Ihnen den letzten Tag des Monats:

function lastday($month = '', $year = '') {
   if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   $result = strtotime('-1 second', strtotime('+1 month', $result));
   return date('Y-m-d', $result);
}

Und der erste Tag:

function firstDay($month = '', $year = '')
{
    if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   return date('Y-m-d', $result);
} 
Luis
quelle
5

Verwenden Sie für einen bestimmten Monat und ein bestimmtes Jahr das Datum () als natürliche Sprache wie folgt

$first_date = date('d-m-Y',strtotime('first day of april 2010'));
$last_date = date('d-m-Y',strtotime('last day of april 2010'));
// Isn't it simple way?

aber für den laufenden Monat

$first_date = date('d-m-Y',strtotime('first day of this month'));
$last_date = date('d-m-Y',strtotime('last day of this month'));
Jimil Choksi
quelle
4

Wenn Sie den ersten und den letzten Tag aus der angegebenen Datumsvariablen ermitteln möchten, können Sie dies wie folgt tun:

$date    =    '2012-02-12';//your given date

$first_date_find = strtotime(date("Y-m-d", strtotime($date)) . ", first day of this month");
echo $first_date = date("Y-m-d",$first_date_find);

$last_date_find = strtotime(date("Y-m-d", strtotime($date)) . ", last day of this month");
echo $last_date = date("Y-m-d",$last_date_find);

Für das aktuelle Datum verwenden Sie dies einfach

$first_date = date('Y-m-d',strtotime('first day of this month'));
$last_date = date('Y-m-d',strtotime('last day of this month'));

Live-Demo

Faisal
quelle
Sie können das Datum ("Ymd", strtotime ($ date)) durch $ date ersetzen, da diese identisch sind, Sie jedoch weniger Code schreiben.
Nicolaskolman
2

Um das erste und letzte Datum von zu bekommen Last Month;

$dateBegin = strtotime("first day of last month");  
$dateEnd = strtotime("last day of last month");

echo date("D-F-Y", $dateBegin);  
echo "<br>";        
echo date("D-F-Y", $dateEnd);
Karuppub
quelle
2

In einfachem Format

   $curMonth = date('F');
   $curYear  = date('Y');
   $timestamp    = strtotime($curMonth.' '.$curYear);
   $first_second = date('Y-m-01 00:00:00', $timestamp);
   $last_second  = date('Y-m-t 12:59:59', $timestamp); 

Ändern Sie für den nächsten Monat $ curMonth in $ curMonth = date ('F', strtotime ("+ 1 Monate"));

Yasar Arafath
quelle
0
$month=01;
$year=2015;
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
echo $num;

Anzeige 31 letzter Tag des Datums

SunUser
quelle