Comunidad de diseño web y desarrollo en internet online

Bug en Flash con fechas y la clase Date y Number

Programando una aplicación de rutina y reutilizando una clase que use en otro proyecto, me tope con un warning en Flash. Me sorprendio porque era un módulo sencillo, además, antes le había hecho pruebas unitarias (con esto se supone no hay bugs).

Pues bien la cosa va así:

Para construir una instancia de la clase Date, le podemos pasar como parametro lo siguiente:

Código :

new Date([año, mes, día]);

Ok, entendido un poco como se crea la instancia de Date, vayamos al bug:

Vamos a crear fechas de junio a agosto del 2006:

Código :

new Date(2006,05,8);
new Date(2006,06,8);
new Date(2006,07,8);


¡Todo bien, verdad!

Ahora, vamos a crear de la misma forma fechas de septiembre a octubre:

Código :

new Date(2006,08,2);
new Date(2006,09,2);

Respetando exactamente la misma forma de instanciar la clase Date, envía el siguiente error.

Flash :

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: ')' or ',' expected
new Date(2006,08,2); //NO es valido con cero

Total ActionScript Errors: 1 Reported Errors: 1

Después de realizar pruebas, deduzco que el problema es el cero al inicio del mes. PERO sólo falla en los meses 08(septiembre) y 09(octubre). Aqui la prueba:

Código :

new Date(2006,8,2);
new Date(2006,9,2);

A modo de tabla voy a compara el mes 7 y 8 para que se vea mas claro:

Código :

new Date(2006,7,2); //Valido sin cero
new Date(2006,07,2); //Valido con cero
new Date(2006,8,2);//Valido sin cero
new Date(2006,08,2); //NO es valido con cero

Obviamente no tengo acceso al compilador de Flash, pero por lógica deduzco que el warning es enviado por una validación erronea, que en determinado momento y cuando el mes es precedido por un cero, valida que el mes, sea un dia de la semana, eso explica por que solo llega hasta el 7.

Repito es un bug, muy refuscado, pero finalmente bug.

Saludos

Update - 18 de Septiembre del 2106 Cosmic Era


Maikel apunta que el error ocurre tambien con la clase Number de Flash.

Maikel :

de hecho no es Date... el bug es de Number:

Código :

var num:Number = 08 ; // genera error de compilacion

Código :

var num:Number = 07 ; // valido

saludos

Update #2 - Casí 3 pero no completamente 2 días despues del anterior update


El Pink Haired Funny-Voice Programmer Maikel demostró que el bug no existe en Actionscript 3. So be happy!

Update #3 Sweet Crystal Memories


Por Freddie®:
Pues resulta que Adrian se acordó que yo expliqué que si se le pone un cero antes del numero es un jodido octal.

Por ende, 07 no da error porque en los octales los numeros van del 0 al 7 y por tanto si existe. En cambio, 08 está mal porque el caracter "8" no existe en el sistema octal.

A la final no es un bug, es una feature

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate