¿Cómo puedo encontrar la primera y la última fecha en un mes usando PHP?
82
¿Cómo puedo encontrar la primera y la última fecha en un mes usando PHP? Por ejemplo, hoy es 21 de abril de 2010; Quiero encontrar el 1 de abril de 2010 y el 30 de abril de 2010.
La forma más sencilla es usarlo date, que le permite mezclar valores codificados de forma rígida con valores extraídos de una marca de tiempo. Si no proporciona una marca de tiempo, asume la fecha y hora actuales.
// 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()busca en la cadena que se le da, como 'm-t-Y', símbolos específicos, y los reemplaza con valores de su marca de tiempo. Entonces, podemos usar esos símbolos para extraer los valores y el formato que queremos de la marca de tiempo. En los ejemplos anteriores:
Y le da el año de 4 dígitos de la marca de tiempo ('2010')
m le da el mes numérico de la marca de tiempo, con un cero inicial ('04')
t le da la cantidad de días en el mes de la marca de tiempo ('30')
Puedes ser creativo con esto. Por ejemplo, para obtener el primer y último segundo de un mes:
Simplemente agregando información aquí, tuve problemas para convertir la fecha a la marca de tiempo de Unix con este formato, se solucionó usando el formato 'dmY' en lugar de 'mdY' ... también el último segundo será '23: 59: 59 'en lugar de '12 : 59: 59 '..
Syed Qarib
26
Simple
Y: una representación numérica completa de un año, 4 dígitos
m: representación numérica de un mes, con ceros a la izquierda
Puede usar la función de fecha para encontrar cuántos días hay en un mes.
// 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.
Espero que ayude.
EDITAR: Después de leer la respuesta de Luis, se me ocurrió que quizás lo desee en el formato correcto (YY-mm-dd). Puede ser obvio, pero no está de más mencionar:
Para el mes y año específicos, use la fecha () como lenguaje natural de la siguiente manera
$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?
pero para el mes actual
$first_date = date('d-m-Y',strtotime('first day of this month'));
$last_date = date('d-m-Y',strtotime('last day of this month'));
Si desea encontrar el primer día y el último día de la variable de fecha especificada, puede hacerlo de la siguiente manera:
$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);
Para la fecha actual, simplemente use esto
$first_date = date('Y-m-d',strtotime('first day of this month'));
$last_date = date('Y-m-d',strtotime('last day of this month'));
Puede reemplazar date ("Ymd", strtotime ($ date)) con $ date porque son iguales pero escribe menos código.
nicolascolman
2
Para obtener la primera y última fecha de 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);
Respuestas:
La forma más sencilla es usarlo
date
, que le permite mezclar valores codificados de forma rígida con valores extraídos de una marca de tiempo. Si no proporciona una marca de tiempo, asume la fecha y hora actuales.// 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()
busca en la cadena que se le da, como'm-t-Y'
, símbolos específicos, y los reemplaza con valores de su marca de tiempo. Entonces, podemos usar esos símbolos para extraer los valores y el formato que queremos de la marca de tiempo. En los ejemplos anteriores:Y
le da el año de 4 dígitos de la marca de tiempo ('2010')m
le da el mes numérico de la marca de tiempo, con un cero inicial ('04')t
le da la cantidad de días en el mes de la marca de tiempo ('30')Puedes ser creativo con esto. Por ejemplo, para obtener el primer y último segundo de un mes:
$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!
Consulte http://php.net/manual/en/function.date.php para ver otros símbolos y más detalles.
fuente
Simple
Referencia: 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 />'; ?>
fuente
Puede usar la función de fecha para encontrar cuántos días hay en un mes.
// 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.
Espero que ayude.
EDITAR: Después de leer la respuesta de Luis, se me ocurrió que quizás lo desee en el formato correcto (YY-mm-dd). Puede ser obvio, pero no está de más mencionar:
// After the above code echo date('Y-m-t', $ts);
fuente
Esto le dará el último día del mes:
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); }
Y el primer día:
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); }
fuente
Para el mes y año específicos, use la fecha () como lenguaje natural de la siguiente manera
$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?
pero para el mes actual
$first_date = date('d-m-Y',strtotime('first day of this month')); $last_date = date('d-m-Y',strtotime('last day of this month'));
fuente
Si desea encontrar el primer día y el último día de la variable de fecha especificada, puede hacerlo de la siguiente manera:
$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);
Para la fecha actual, simplemente use esto
$first_date = date('Y-m-d',strtotime('first day of this month')); $last_date = date('Y-m-d',strtotime('last day of this month'));
fuente
Para obtener la primera y última fecha de
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);
fuente
En formato simple
$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);
Para el próximo mes, cambie $ curMonth a $ curMonth = date ('F', strtotime ("+ 1 mes"));
fuente
$month=01; $year=2015; $num = cal_days_in_month(CAL_GREGORIAN, $month, $year); echo $num;
mostrar 31 último día de la fecha
fuente