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));
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top