Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/11/2007, 13:11
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 7 meses
Puntos: 45
Re: Curiosidad con objeto Date

Bueno, siento disentir en tu rango de fechas posibles frijolerou. Haciendo pruebas me han salido cosas interesantes. Me hice un script para averiguar la fecha más alta capaz de interpretar mi navegador antes de que se devuelva NaN o Invalid Date (IE ó FF). El resultado ha sido que la fecha más alta está en:
Domingo, 13 de Septiembre de 275760, 02:00:00 000

Además, para confirmar el dato he estado buscando información al respecto: http://www.merlyn.demon.co.uk/js-datex.htm#DRF

Ahí pone que según la especificación ECMA, javascript debe ser capar de manejar hasta 10^8 días después del día cero, esto es, después de 1970-01-01 00:00:00 GMT (no entiendo muy bien que mi límite esté en 2 horas más arriba de 00:00:00, estando en GMT+1... pero sí que me dan exactamente los 100000000 días desde 1970).


Más cosas. El siguiente código me ha funcionado como se espera, se imprime true en IE y en FF:
Código PHP:
var fecha1 = new Date("2000/10/01");
var 
fecha2 = new Date("6666/66/66");
document.write( (fecha1 fecha2) ); 
Si utilizamos 7777/77/77 dará efectivamente false la comparación, pero no porque exista un bug, sino porque el string "7777/77/77" para construir un Date no es válido (pruébalo y ya verás como la fecha es inválida, sin embargo para "7777/69/77" sí es válido). Al parecer esos strings tienen que soportados por el método Number Date.parse(string str), que convierte str en un número, que representa los milisegundos desde la fecha zero. Ese string str tiene que estar en formato IETF, que coordina la manera de escribir una fecha.


Lamentablemente, aunque me he pateado la página web de la organización, no he conseguido hallar nada más que ésto:
Date and Time on the Internet: Timestamps (su versión HTMLizada más cómoda).
Pero acerca de las fechas mal escritas tipo 6666/66/66 -que el sabio intérprete de javascript consigue ajustar- no he encontrado ningún tipo de norma. Según el documento, una fecha debe estar bien escrita, siguiendo éstas normas:
Cita:
date-fullyear = 4DIGIT
date-month = 2DIGIT ; 01-12
date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on
; month/year
time-hour = 2DIGIT ; 00-23
time-minute = 2DIGIT ; 00-59
time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second
; rules
time-secfrac = "." 1*DIGIT
time-numoffset = ("+" / "-") time-hour ":" time-minute
time-offset = "Z" / time-numoffset

partial-time = time-hour ":" time-minute ":" time-second
[time-secfrac]
full-date = date-fullyear "-" date-month "-" date-mday
full-time = partial-time time-offset

date-time = full-date "T" full-time
Que no nos sacan de dudas a la hora de saber que 6666/66/66 funciona y 7777/77/77 no.




Así que seguiremos investigando en qué limites tiene el Date.parse(), que pueden ser de utilidad conocerlos.




¡Buen hilo frijolerou!

__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.