strptime, "This function is not implemented on Windows platforms".

Hoy mi querido PHP me jugó una mala pasada.  Estaba haciendo un despliegue preliminar de uno de mis proyectos en el servidor del cliente, un Windows 2K3 con PHP 5.2.3 cuando durante las pruebas,  la ejecución de las series falló con un mensaje de error inesperado para mi: This function is not implemented on Windows platforms.  La función strptime que siendo muy útil ella, recibe una fecha en formato texto, el formato en que viene representada dicha fecha y retorna un arreglo con las secciones de la fecha.  El problema: no funciona en Windows!

Hasta ahora no se me había ocurrido que pudiera pasar este hecho trivial, que algo de PHP corra en una plataforma y no en otra.  Bueno, que el symlink no funcione en Windows no me extrañaría, y eso que veo que ya funciona en Windows Vista/8 Server y superiores; pero que no funcionen las funciones de conversión de fechas del API estándar me parece triste.  Tendré que dejar de creer en el write it once & run it everywhere para agregarle un test it forever everyplace.

Por suerte para mi, -hasta ahora- la única función que ha presentado este problema fue la mencionada.  Por mucha mas suerte para mi, un amigo francés llamado Lionel Sauron publicó una versión de reemplazo de strptime para Windows que funciona perfectamente para mis necesidades.

Gracias a este código la solución fue muy sencilla y con un mínimo impacto en mi proyecto.  Creé un método estático en la librería Fecha llamado strptime2($cadena, $formato) cuya implementación corresponde con la propuesta por Lionel y para su invocación verificó si está o no disponible la versión estándar de la función y utilizo la mas conveniente.

$f = null;

if(function_exists("strptime") === true)
    $f = strptime($cadena, $formato);
else
    $f = Fecha::strptime2($cadena, $formato);

Enlaces.

One thought on “strptime, "This function is not implemented on Windows platforms".”

Leave a Reply

Your email address will not be published. Required fields are marked *