Configuración regional
Los métodos de conversión de fechas a representación de string o cadena de caracteres, proporcionan la información con nombres en inglés y formatos internacionales.
Si queremos tener las fechas y horas en formatos nacionales, incluso en idioma loca, podríamos procesar las cadenas en formato internacional para traducir o adaptar el formato a la norma local.
Pero también podemos usar los métodos de conversión a cadena en versión regionales de los diferentes métodos toString()
- toLocaleDateString(): devuelve la cadena de la fecha del día
- toLocaleTimeString(): devuelve la cadena de la hora
- toLocaleString(): fecha y hora completas
Todos usan un argumento para indicar como ha de ser la cadena devuelta, configuraciones par el idioma o el orden de dia, mes, año entre otros.
Los argumetnos son opcionales, si no se usan el método funciona como los métodos toString() y similares.
El primer argumento es el habitual del idioma con los código xx-XX, (como es-ES, en-EN) pero la cadena puede completarse con algunos detalles como
- nu : sistema de numeración
- ca: calendario
- hc: ciclo horario (am, pm)
El segundo argumento sobre escribe las opciones del primero y es un objeto con pares claves valor que describen el formato de la cadena
- dateStyle: formato de fecha full, long, medium, short
- timeStyle:formato de hora full, long, medium, short
- calendar: "buddhist", "chinese", " coptic", "ethiopia", "ethiopic", "gregory", " hebrew", "indian", "islamic", "iso8601", " japanese", "persian", "roc"
- numberingSystem: "arab", "arabext", " bali", "beng", "deva", "fullwide", " gujr", "guru", "hanidec", "khmr", " knda", "laoo", "latn", "limb", "mlym", " mong", "mymr", "orya", "tamldec", " telu", "thai", "tibt".
- dayPeriod: parte del día "narrow", "short", " long".
- localeMatcher: algoritmo para concicidencia con la configuración local: "lookup" "best fit";
- timeZone: zona horaria, por defecto la local, acepta cadenas como Europe/Madrid o America/Mexico_City (puedes consultar en ver IANA)
- hour12 Usar ciclo de 12 horas: true, false
- hourCycle: ciclo horario h11, h12, h23, h24. Es sobreescrito por hour12
- formatMatcher: algoritmo para concicidencia con la configuración local: "lookup" "best fit";
Las siguientes opciones controlan los formatos de presetnación de la fecha y de la hora por sus componentes: dia de la semana, mes, minutos, etc.
- weekday: Nombre del día de la semana "long""short" "narrow" .
- era La era, antes (BC) / depués (AD) de cristo: "long" "short" "narrow"
- year El año "numeric" "2-digit" (e.g., 12)
- month El mes : "numeric", "2-digit" , "long" , "short" , "narrow"
- day Día del mes "numeric", "2-digit"
- hour la hora del día "numeric", "2-digit".
- minute Los minutos "numeric", "2-digit".
- second segundos "numeric", "2-digit".
- fractionalSecondDigits número de dígitos para los milisegundos: 0, 1,2,3,
- timeZoneName Zona horaria "long", "short"
Parecen muchas opciones pero si te fijas no son tantas las que vas a usar habitualmente. Estas opcines suponen un ahorro de tiempo cuando queires dar un cierto formato a la fecha y para traducirla a un idioma concreto.
También es util si solo queires usar una parte de la fecha como el nombre del dia de la semana o del día del mes
var fecha = new Date();
var día, hoy;
var hora;
var nomMes;
hora = fecha.toLocaleString("es-ES", {hour12: true});
console.log("Hora: "+hora);
nomMes = fecha.toLocaleString("es-ES", {month: "long"});
console.log("Mes : "+nomMes);
dia = fecha.toLocaleString("es-ES", {weekday: "long"});
console.log("Dia de semana: "+dia);
hoy=fecha.toLocaleDateString("es-MX", {month:"long", day:"numeric", year:"2-digit"});
console.log("Hoy es: "+hoy)
Puedes probar todas las opciones para ver los efectos. Estos métodos de transformación de obejtos Date a cadenas son sumamente útiles para la repressentación adecuada de fechas y horas.