php - mktime o strtotime?
Pregunta
Estoy tratando de convertir a 2010-02 de febrero de 2010. Sin embargo, me siguen dando de diciembre de 1969
He intentado usar mktime, strtotime, y alguna combinación de los dos, pero todavía no he sido capaz de hacerlo ...
Esto es lo que he intentado más recientemente ...
$path_title = date('F, Y', mktime(0,0,0,2,0,2010));
Solución
Esta sería una manera de hacerlo:
$dateString = '2010-02';
list($year, $month) = explode('-', $dateString);
$timeStamp = mktime(0, 0, 0, $month, 1, $year);
echo date('F, Y', $timestamp);
Otra forma sería la siguiente:
$dateString = '2010-02';
$timestamp = strtotime($dateString . '-01');
echo date('F, Y', $timestamp);
strtotime
no puede manejar fechas ambiguas como "2010-02", pero si lo hace una fecha completa que debería funcionar.
De lo contrario, es posible que desee ver en algo así como DateTime::createFromFormat
.
Otros consejos
Prueba esto:
$str = '2010-02';
echo date('F, Y',mktime(0,0,0,substr($str,-2),1,substr($str,0,4)));
Hay que asegurarse de que utiliza los valores válidos para mktime()
. En el ejemplo que ha editado en la cuestión, que ha 0
como el día, que es efectivamente el primer día, menos uno, que le pone en el mes anterior.