Convertir una cadena a fecha en Javascript

29/Ene/2012 JavaScript , , , , 3 Comentarios
Artículos Programación en Javascript

En este ejemplo vamos a ver cómo podemos convertir una cadena a una fecha, es decir un elemento Date, en Javascript. A primeras parece que pensar que es algo tan trivial como pasarselo en la inicialización. Pero veremos que tenemos ciertas restricciones.

Y es que en el fondo, sí, podemos escribir la siguiente línea de código:

var fecha = new Date("Sat, 4 Feb 2012");

Pero, ¿qué podemos utilizar como cadena de texto? Lo que podemos utilizar es todo aquello que podamos analizar mediante el método .parse() del objeto Date.

Date.parse(cadena);

Y si miramos qué soporta el método .parse() veremos que el texto que le pasemos tiene que estar en formato RFC822 o ISO 8601. Así el método nos devolverá los milisegundos desde el 1 de enero de 1970.

Si no te apetece leerte que dicen los estándares RFC822 y ISO 8601 te lo resumiremos en que tienen que ser fechas en formato:

dia_semana, dia hora
yyyy-mm-dd

Y formatos similares. Así el 4 de febrero del 2012 podría declararse como:

Sat 4 Feb 2012 12:20:34
2012-02-04

Nosotros, para evitar formateos adicionales vamos a montar la fecha por nuestra cuenta, así que utilizaremos un formulario para pedirle al usuario los datos. El formulario será el siguiente:

/ /

Y ahora, controlando el evento de pulsar sobre el botón, es decir, utilizando un addEventListener()

var boton = document.getElementById("calcular");
boton.addEventListener("click",function(ev){
  ...	
},false);

Vamos a componer nuestra fecha. Obtenemos los valores del formulario y componemos la fecha en formato yyyy-mm-dd

dia = document.getElementById("dia").value;
mes = document.getElementById("mes").value;
annio = document.getElementById("annio").value;
fecha_texto = annio+"-"+mes+"-"+dia;

Lo siguiente será parsearla y crear una fecha (aunque podríamos haber hecho solo lo segundo)

ms = Date.parse(fecha_texto);
fecha = new Date(ms);

Por último volcamos el contenido del Date a un campo y bloqueamos que se lance el evento del botón con .preventDefault() para poder ver el resultado y no enviar el formulario.

document.getElementById("fecha").innerHTML = fecha;
ev.preventDefault();

El código entero del manejador quedaría de la siguiente forma:

var boton = document.getElementById("calcular");
boton.addEventListener("click",function(ev){
		
	dia = document.getElementById("dia").value;
	mes = document.getElementById("mes").value;
	annio = document.getElementById("annio").value;
	
	fecha_texto = annio+"-"+mes+"-"+dia;
	
	ms = Date.parse(fecha_texto);
	fecha = new Date(ms);
	
	document.getElementById("fecha").innerHTML = fecha;
	ev.preventDefault();
	
},false);

Vídeos sobre Javascript


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.