fechas en javascript

Las fechas en javascript son muy importantes, de hecho estoy seguro de que más pronto que tarda cualquier desarrollador se enfrenta a la fechas en cualquier proyecto que realice, y creo que es la razón de que las fechas sean tan potentes en muchos lenguajes de programación. Y naturalmente Javascript no iba a ser menos…

Javascript presenta las fechas de dos formas:

  • Como una cadena: Mon Sep 21 2015 18:33:46 GMT+0200
  • Como un número: 1442852951834 que nos dice el numero de milisegundos pasados desde el 1 de enero de 1970 a las 0:00:00

Creación de un objeto fecha

En javascript las fechas se generan de forma automática con el objeto Date, y  se componen de año, mes día hora minuto segundo y milisegundo.

Para crear nuestro objeto Date se utiliza el constructor new Date()  y existen cuatro maneras de iniciar una fecha como vemos a continuación:

new Date();
new Date(milliseconds);
new Date(dateString);
new Date(año, mes, dia, hora, minutos, segundos, milisegundos);

De esta forma si queremos crear la fecha actual, tan solo tenemos que guardar el objeto en una variable:

//cogiendo la fecha actual
var fecha = new Date();
//poniendo en un string la fecha que queramos
var fecha = new Date("October 13, 2014 11:13:00");
//poniendo el tiempo en milisegundos
var fecha = new Date(88900000);
//usando 7 numeros (año, mes, dia, hora, minutos, segundos, milisegundos)
var fecha = new Date(99,5,24,11,33,30,0);
//usando solo el año el mes y el dia
var fecha = new Date(99,5,24);

Mostrando las fechas

Al mostrar un objeto Date en HTML automáticamente se convierte en una cadena si utilizamos el método toString() de la siguiente forma:

<span id="prueba"></span>
<script type="text/javascript">
    var fecha = new Date();
    document.getElementById("prueba").innerHTML = fecha.toString();
</script>

Nota: para no repetir código voy a poner solo la línea del getElementByID en los siguientes ejemplos…

También podemos convertir la fecha a una cadena UTC (el estandard de visualización de fechas) por medio de toUTCString()

document.getElementById("prueba").innerHTML = fecha.toUTCString();

Incluso existe el método toDateString() con el cual podemos hacer el formato más legible:

document.getElementById("prueba").innerHTML = fecha.toDateString();

Formatos de las fechas

Aunque los métodos que hemos visto pueden servirnos de utilidad, la realidad es que los formatos de las fechas son mucho más interesantes, ya que nos permiten una mayor flexibilidad a la hora de trabajar.

Los formatos de las fechas se pueden diferenciar en tres tipos:

  • ISO (AAAA-MM-DD)
  • Largas
  • Cortas

Vamos a estudiar cada tipo y sus posibilidades por separado:

Fechas en Javascript ISO

Uno de los formatos más interesantes a la hora de trabajar, ya que es un formato muy moldeable, de hecho yo lo utilizo en muchas aplicaciones, sobre todo cuando tengo que pasar fechas de JS a PHP y viceversa.

//formato básico AAAA-MM-DD para crear la fecha
var fecha = new Date("2015-09-21");
//como AAAA-MM
var fecha = new Date("2015-09");
//solo el año
var fecha = new Date("2015");
//mostrando tambien la hora
var fecha = new Date("2015-09-21T19:52:00:00"); 

La T en la cadena donde mostramos la hora en formato UTC (Tiempo Universal Coordinado) que es lo mismo que GMT(Greenwich Mean Time)

Fechas largas

Las fechas largas suelen estar escritas de la siguiente forma “MMM DD AAAA”m aunque se pueden poner en cualquier orden el mes el día y el año, ignora las comas, se puede poner el mes entero si queremos y ademas se pueden usar mayúsculas y minúsculas.

var fecha = new Date("January 12 1999");
var fecha = new Date("1999 January 12");
var fecha = new Date("January, 12, 1999");
var fecha = new Date("JANUARY 12 1999");

El problema es que lo meses deben de esta en inglés…

Fechas cortas

Las fechas cortas se representan por DD/MM/AAAA  o por AAAA/MM/DD donde el separador / puede ser un guión –

var fecha = new Date("2015/09/21");
var fecha = new Date("21/09/2015");