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.
Antworten:
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 .
Einfache Sache
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 />';
?>
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);
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);
}
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'));
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'));
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"));