Fechas
La clase Date
En JavaScript, la clase Date se utiliza para representar una fecha, hora y zona horaria. Además, encapsula métodos para operar con esa fecha.
El constructor de Date puede recibir el número de milisegundos desde el 1/1/1970 a las 00:00:00 GMT (también llamado Epoch time o UNIX time). Si pasamos más de un número, (sólo el primero y el segundo son obligatorios),el orden debería ser: 1º → año, 2º → mes (0..11), 3º → día, 4º → horas, 5º → minutos, 6º → segundos. Otra opción es pasar un string que contenga la fecha en un formato estándar internacional.
Si, en lugar de un objeto Date, queremos directamente obtener los milisegundos que han pasado desde el 1/1/1970 (Epoch), lo que tenemos que hacer es usar los métodos Date.parse(string) y Date.UTC(año, mes, día, hora, minuto, segundos). También podemos usar Date.now(), para la fecha y hora actual en milisegundos.
Métodos de la clase Date
La clase Date tiene setters y getters para las propiedades: fullYear, month (entre 0: enero y 11: diciembre), date (día del mes: 1-31), hours, minutes, seconds, y milliseconds. También el método getDay() nos devuelve el día de la semana actual (entre 0:domingo y 6:sábado). Si pasamos un valor negativo, por ejemplo, fecha.setMonth(-1), se establece el último mes (diciembre) del año anterior.
Cuando queramos imprimir la fecha, tenemos métodos que nos la devuelven en diferentes formatos:
API de Internacionalización (Intl)
La nueva API de internacionalización de JavaScript ofrece entre otras cosas la posibilidad de formatear las fechas, formatear números y comparar cadenas utilizando las particularidades del idioma que elijamos.
Intl.Collator
Genera un comparador de cadenas que tiene en cuenta el idioma. Por ejemplo, si lo configuramos en español (es), podrá comparar palabras con acentos, la letra ñ, etc.
Intl.ListFormat
A partir de una colección, genera una cadena con los elementos de la lista pero tienendo el cuenta la conjunción usada para el último elemento según el idioma elegido (en español sería 'y' o 'o').
Intl.NumberFormat
Formatea un número teniendo el cuenta el separador de decimales o millares que tenga el idioma. También puede añadir el símbolo de una moneda que elijamos (antes o después, según el idioma).
Intl.DateTimeFormat
Este clase permite formatear fechas teniendo en cuenta el idioma. Se pueden configurar varios parámetros del estilo de la fecha como se puede ver en los siguientes ejemplos: