¿Cómo le doy formato a una fecha en JavaScript?
¿Cómo formato un Date
objeto Javascript como una cadena? (Preferiblemente en el formato: 10-Aug-2010
)
Si necesita un control ligeramente menor sobre el formato que la respuesta actualmente aceptada, Date#toLocaleDateString
puede utilizarlo para crear representaciones estándar específicas de la configuración regional. Los argumentos locale
y options
permiten que las aplicaciones especifiquen el idioma cuyas convenciones de formato deben usarse y permiten cierta personalización de la representación.
Ejemplos clave de opciones:
- día:
La representación del día.
Los valores posibles son "numéricos", "2 dígitos". - día laborable:
La representación del día laborable.
Los valores posibles son "estrecho", "corto", "largo". - año:
La representación del año.
Los valores posibles son "numéricos", "2 dígitos". - mes:
La representación del mes.
Los valores posibles son "numérico", "2 dígitos", "estrecho", "corto", "largo". - hora:
La representación de la hora.
Los valores posibles son "numéricos", "2 dígitos". - minuto:
La representación del minuto.
Los valores posibles son "numéricos", "2 dígitos". - segundo:
La representación del segundo.
Los valores posibles son "numéricos", de 2 dígitos". - hora12:
La representación del formato de hora.
Acepta booleano verdadero o falso
Todas estas claves son opcionales. Puede cambiar la cantidad de valores de opciones según sus requisitos, y esto también reflejará la presencia de cada término de fecha y hora.
Nota: Si solo desea configurar las opciones de contenido, pero aún usar la configuración regional actual, pasar null
el primer parámetro provocará un error. Úselo undefined
en su lugar.
Para diferentes idiomas:
- "en-US": para inglés americano
- "en-GB": para inglés británico
- "hola-IN": para hindi
- "ja-JP": para japonés
Puede utilizar más opciones de idioma.
Por ejemplo
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today = new Date();
console.log(today.toLocaleDateString("en-US")); // 9/17/2016
console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016
También puedes utilizar el toLocaleString()
método para el mismo propósito. La única diferencia es que esta función proporciona el momento en el que no pasas ninguna opción.
// Example
9/17/2016, 1:21:34 PM
Referencias:
toLocaleString()
toLocaleDateString()
Para formatos de fecha delimitados personalizados, debe extraer los componentes de fecha (u hora) de un DateTimeFormat
objeto (que forma parte de la
API de internacionalización de ECMAScript ) y luego crear manualmente una cadena con los delimitadores que desee.
Para hacer esto, puedes usar DateTimeFormat#formatToParts
. Podrías desestructurar la matriz, pero eso no es lo ideal, ya que la salida de la matriz depende de la configuración regional:
{ // example 1
let formatter = new Intl.DateTimeFormat('en');
let example = formatter.formatToParts();
console.log(example);
}
{ // example 2
let formatter = new Intl.DateTimeFormat('hi');
let example = formatter.formatToParts();
console.log(example);
}
Mejor sería asignar una matriz de formato a las cadenas resultantes:
function join(date, options, separator) {
function format(option) {
let formatter = new Intl.DateTimeFormat('en', option);
return formatter.format(date);
}
return options.map(format).join(separator);
}
let options = [{day: 'numeric'}, {month: 'short'}, {year: 'numeric'}];
let joined = join(new Date, options, '-');
console.log(joined);
También puede extraer las partes de una DateTimeFormat
por una usando
DateTimeFormat#format
, pero tenga en cuenta que al usar este método, a partir de marzo de 2020, hay un error en la implementación de ECMAScript cuando se trata de ceros a la izquierda en minutos y segundos (este error se evita mediante el enfoque anterior).
let date = new Date(2010, 7, 5);
let year = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date);
let month = new Intl.DateTimeFormat('en', { month: 'short' }).format(date);
let day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);
console.log(`${day}-${month}-${year}`);
Cuando se trabaja con fechas y horas, normalmente vale la pena utilizar una biblioteca (por ejemplo, luxon , date-fns ,momento.jsno se recomienda para proyectos nuevos ) debido a las muchas complejidades ocultas del campo.
Tenga en cuenta que la API de internacionalización de ECMAScript, utilizada en las soluciones anteriores, no es compatible con IE10 ( 0,03% de participación de mercado global de navegadores en febrero de 2020).
Si necesita formatear rápidamente su fecha usando JavaScript simple, use getDate
, getMonth + 1
, y :getFullYear
getHours
getMinutes
var d = new Date();
var datestring = d.getDate() + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();
// 16-5-2015 9:50
O, si necesita que se complete con ceros:
var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);
// 16-05-2015 09:50
Utilice la biblioteca date.format :
var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
devoluciones:
Saturday, June 9th, 2007, 5:46:21 PM
formato de fecha en npm
http://jsfiddle.net/phZr7/1/
Bueno, lo que quería era convertir la fecha de hoy en una cadena de fecha compatible con MySQL como 2012-06-23
y usar esa cadena como parámetro en una de mis consultas. La solución simple que he encontrado es esta:
var today = new Date().toISOString().slice(0, 10);
Tenga en cuenta que la solución anterior no tiene en cuenta el desplazamiento de su zona horaria .
Podrías considerar usar esta función en su lugar:
function toJSONLocal (date) {
var local = new Date(date);
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return local.toJSON().slice(0, 10);
}
Esto le dará la fecha correcta en caso de que esté ejecutando este código alrededor del inicio o final del día.
var date = new Date();
function toLocal(date) {
var local = new Date(date);
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return local.toJSON();
}
function toJSONLocal(date) {
var local = new Date(date);
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return local.toJSON().slice(0, 10);
}
// check out your devtools console
console.log(date.toJSON());
console.log(date.toISOString());
console.log(toLocal(date));
console.log(toJSONLocal(date));
- Fecha.toISOString
- Fecha.toJSON
- cadena.rebanada
- Ejemplo externo