una - PHP: ¿la forma más sencilla de obtener la fecha del mes 6 meses anterior a la primera?
strtotime php ejemplos (4)
Entonces, si hoy fuera 12 de abril de 2010, debería regresar el 1 de octubre de 2009.
Algunas soluciones posibles que he buscado en Google parecen demasiado complejas, ¿alguna sugerencia?
Hm, tal vez algo como esto;
echo date("F 1, Y", strtotime("-6 months"));
EDITAR;
si desea especificar un uso de fecha personalizado;
echo date("F, 1 Y", strtotime("-6 months", strtotime("Feb 2, 2010")));
Se discutió en los comentarios, pero la respuesta aceptada tiene algunas strtotime()
innecesarias de strtotime()
. Se puede simplificar para:
date("F 1, Y", strtotime("Feb 2, 2010 - 6 months"));
Además, puedes usar DateTime()
como este, que creo que es igual de legible:
(new DateTime(''Feb 2, 2010''))->modify(''-6 months'')->format(''M 1, Y'');
O usando el método estático ....
DateTime::createFromFormat(''M j, Y'',''Feb 2, 2010'') ->modify(''-6 months'') ->format(''M 1, Y'');
Un poco hackish pero funciona:
$date_half_a_year_ago = mktime(0, 0, 0, date(''n'')-6, 1, date(''y''))
usa una combinación de mktime
y date
:
$given_timestamp = getSomeDate();
$date_half_a_year_ago = mktime(0, 0, 0, date(''n'', $given_timestamp)-6, 1, date(''y'', $given_timestamp))
para hacer la nueva fecha en relación con una fecha determinada y no hoy, date
llamada con un segundo parámetro
echo date(''F j, Y'', $date_half_a_year_ago);
para imprimirlo formateado, simplemente use la date
otra vez:
<?php
$date = new DateTime("-6 months");
$date->modify("-" . ($date->format(''j'')-1) . " days");
echo $date->format(''j, F Y'');
?>