date_create_from_format no devuelve el resultado esperado

Acabo de intentar,

date_create_from_format('Ym','201302') 

Y supongo que porque es el 29 de hoy, en realidad me está devolviendo el 1 de marzo.

Esperaba volver 2013-02-01 00:00:00 .

¿Existe una función diferente que analice una fecha “correctamente”? Si no, puedo extraerlo yo mismo, no es un gran problema.

Si el format no contiene el carácter ! luego, partes del tiempo generado que no se especifican en format se configurarán a la hora actual del sistema.

Si el format contiene el carácter ! , luego partes del tiempo generado no proporcionadas en format , así como valores en el lado izquierdo de ! , se ajustarán a los valores correspondientes de la época de Unix.

La época de Unix es 1970-01-01 00:00:00 UTC. ( DateTime Manual )

Entonces, añadiendo un ! al principio de su cadena de format debe solucionar su problema.

La solución de TheWolf parece funcionar perfectamente, pero aquí hay una alternativa que comencé a escribir de todos modos:

 function CompactStrToTime($str) { $year = strlen($str)>=4 ? substr($str,0,4) : date('Y'); $month = strlen($str)>=6 ? substr($str,4,2) : 1; $day = strlen($str)>=8 ? substr($str,6,2) : 1; $hour = strlen($str)>=10 ? substr($str,8,2) : 0; $min = strlen($str)>=12 ? substr($str,10,2) : 0; $sec = strlen($str)>=14 ? substr($str,12,2) : 0; return mktime($hour,$min,$sec,$month,$day,$year); }