Pregunta Cómo formatear una fecha de JavaScript


¿Cómo puedo formatear un objeto de fecha JavaScript para imprimir como 10-Aug-2010?


1257
2017-08-23 23:28


origen


Respuestas:


Atención: hay mejores respuestas a continuación. Esta respuesta se escribió en 2010 y desde entonces han llegado soluciones nuevas y mejores. El OP debería aceptar otra respuesta.

function formatDate(date) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];

  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();

  return day + ' ' + monthNames[monthIndex] + ' ' + year;
}

console.log(formatDate(new Date()));  // show current date-time in console

Puedes editar la matriz monthNames para usar enero, febrero, marzo, etc.


864
2017-08-23 23:35



Utilizar toLocaleDateString();

los toLocaleDateString() método devuelve una cadena con una representación sensible al idioma de la parte de fecha de la fecha. Los argumentos de configuraciones regionales y opciones permiten que las aplicaciones especifiquen el idioma cuyas convenciones de formato deben usarse y permiten personalizar el comportamiento de la función.

Los valores que puede pasar en opciones para diferentes claves:

  1. día: 
    La representación del día.
    Los valores posibles son "numéricos", "2 dígitos".
  2. día laborable: 
    La representación del día de la semana.
    Los valores posibles son "estrecho", "corto", "largo".
  3. año: 
    La representación del año.
    Los valores posibles son "numéricos", "2 dígitos".
  4. mes: 
    La representación del mes.
    Los valores posibles son "numérico", "2 dígitos", "estrecho", "corto", "largo".
  5. hora: 
    La representación de la hora.
    Los valores posibles son "numéricos", "2 dígitos".
  6. minuto: La representación del minuto.
     Los valores posibles son "numéricos", "2 dígitos".
  7. segundo: 
    La representación del segundo
    Los valores posibles son "numéricos", 2 dígitos ".

Todas estas llaves son opcionales Puede cambiar el número 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 usa la configuración regional actual, null para el primer parámetro causará un error. Utilizar undefined en lugar.

Para diferentes idiomas:

  1. "en-US": Para inglés
  2. "hola-IN": Para Hindi
  3. "ja-JP": Para japonés

Puede usar 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 usar el toLocaleString() método para el mismo propósito. La única diferencia es que esta función proporciona el tiempo cuando no pasa ninguna opción.

// Example
9/17/2016, 1:21:34 PM

Referencias


766
2017-12-01 08:11



Utilizar el 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 

dateformat en npm

http://jsfiddle.net/phZr7/1/


523
2017-08-23 23:35



Si necesita formatear rápidamente su fecha usando JavaScript, use getDate, getMonth + 1, getFullYear, getHours y 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 rellene 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

326
2018-05-16 07:02



Bueno, lo que quería era convertir la fecha de hoy en MySQL cadena de fecha amigable 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 no tener en cuenta el desplazamiento de la zona horaria.

Puede 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 / final del día.


301
2018-06-23 18:49



Si usted es Ya estoy usando jQuery UI en tu proyecto podrías hacerlo de esta manera:

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));

// formatted will be 'Jul 8, 2014'

Algunas opciones de formato de fecha datepicker para jugar están disponibles aquí.


157
2017-07-09 13:52



Creo que puedes usar el no estándar Método de fecha toLocaleFormat(formatString)

formatString: Una cadena de formato en el mismo formato esperado por el strftime() función en C.

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

Referencias


112
2017-12-30 05:33



Función de formateo personalizado:

Para formatos fijos, una función simple hace el trabajo. El siguiente ejemplo genera el formato internacional AAAA-MM-DD:

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

El formato OP se puede generar como:

function dateToYMD(date) {
    var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var d = date.getDate();
    var m = strArray[date.getMonth()];
    var y = date.getFullYear();
    return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

Nota: Sin embargo, generalmente no es una buena idea extender las bibliotecas estándar de JavaScript (por ejemplo, al agregar esta función al prototipo de Fecha).

Una función más avanzada podría generar resultados configurables en función de un parámetro de formato.

Si escribir una función de formateo es demasiado larga, hay muchas bibliotecas alrededor de las cuales lo hace. Algunas otras respuestas ya las enumeran. Pero el aumento de las dependencias también lo tiene en contrapartida.

Funciones de formateo de ECMAScript estándar:

Desde versiones más recientes de ECMAScript, el Date la clase tiene algunas funciones de formateo específicas:

toDateString: Depende de la implementación, muestra solo la fecha.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString: Mostrar fecha y hora ISO 8601.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

toJSON: Stringifier para JSON.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString: Depende de la implementación, una fecha en formato de configuración regional.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString: Depende de la implementación, una fecha y hora en formato de configuración regional.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString: Depende de la implementación, una hora en formato de configuración regional.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

Encadenar: ToString genérico para la fecha.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

Nota: es posible generar salida personalizada de esos formatos>

new Date().toISOString().slice(0,10); //return YYYY-MM-DD

Ejemplos de fragmentos:

console.log("1) "+  new Date().toDateString());
console.log("2) "+  new Date().toISOString());
console.log("3) "+  new Date().toJSON());
console.log("4) "+  new Date().toLocaleDateString());
console.log("5) "+  new Date().toLocaleString());
console.log("6) "+  new Date().toLocaleTimeString());
console.log("7) "+  new Date().toString());
console.log("8) "+  new Date().toISOString().slice(0,10));


109
2018-04-12 09:09



JavaScript simple es la mejor opción para pequeños onetimers.

Por otro lado, si necesitas más cosas para la fecha, MomentJS es una gran solución.

Por ejemplo:

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours

88
2017-12-24 10:15