¿Cómo puedo eliminar el tiempo de la fecha con Moment.js?

269
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LLL');
};

Muestra: "28 februari 2013 09:24"

Pero me gustaría eliminar el tiempo al final. ¿Cómo puedo hacer eso?

Estoy usando Moment.js .

Obsivus
fuente
Use el método Split para separar las cadenas
AmGates

Respuestas:

605

Lamento ir tan tarde, pero si desea eliminar la parte de tiempo de un formato en moment()lugar de hacerlo, entonces el código es:

.startOf('day')

Ref: http://momentjs.com/docs/#/manipulating/start-of/

Graham Charles
fuente
90
Tenga cuidado con esto si va entre zonas horarias (o si no está prestando atención a las zonas horarias). Tuve un problema en el que mi fecha UTC se convertía a la hora local, luego se aplicaba startOf('day'), que era el comienzo del día anterior . Solucionado conmoment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate()
colllin el
26
También tenga cuidado de que esta función realmente mute el objeto original
Dirk Boer
66
.startOf('day')no elimina la parte de tiempo per se, solo establece la hora en 00:00:00. Entonces, sí, como comentó 'collin', debes tener cuidado al guardar la fecha. Se está utilizando una alternativa mejor format('LL'), como se ha respondido en este hilo.
Sudarshan_SMD
44
Para evitar mutar el objeto original, use someMoment.clone().startOf('day')o moment(someMoment).startOf('day').
Pang
Tenga cuidado, startOf ('día') restablecerá todo y no solo establecerá la hora en 00:00:00. moment().utc().add(1,'d').startOf('day')restablecerá el objeto a hoy.
Tristan
51

Utilizar format('LL')

Dependiendo de lo que intente hacer con él, format('LL')podría ser el truco. Produce algo como esto:

Moment().format('LL'); // => April 29, 2016
Joshua Pinter
fuente
26

La forma correcta sería especificar la entrada según su requisito, lo que le dará más flexibilidad.

La presente definición incluye lo siguiente

LTS : 'h:mm:ss A', LT : 'h:mm A', L : 'MM/DD/YYYY', LL : 'MMMM D, YYYY', LLL : 'MMMM D, YYYY h:mm A', LLLL : 'dddd, MMMM D, YYYY h:mm A'

Puede usar cualquiera de estos o cambiar la entrada que se pasa a moment (). Format (). Por ejemplo, para su caso puede pasar moment.utc(dateTime).format('MMMM D, YYYY').

Sahil Jain
fuente
9
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LL')
}
AmGates
fuente
6

También puede usar este formato:

moment().format('ddd, ll'); // Wed, Jan 4, 2017

Hashmita Raut
fuente
6

Con las versiones más recientes de moment.js también puedes hacer esto:

var dateTime = moment();

var dateValue = moment({
    year: dateTime.year(),
    month: dateTime.month(),
    day: dateTime.date()
});

Ver: http://momentjs.com/docs/#/parsing/object/ .

Torben Rahbek Koch
fuente
¿No sería en date: dateTime.date()lugar de day: dateTime.date()?
philfreo
1
'día y fecha clave significan día del mes'. de los documentos. dayfunciona pre versión 2.8.4.
oldwizard
6

Bien, sé que llego tarde a la fiesta. Como 6 años de retraso, pero esto era algo que necesitaba averiguar y formatearlo AAAA-MM-DD.

moment().format(moment.HTML5_FMT.DATE); // 2019-11-08

También se puede pasar de un parámetro como, 2019-11-08T17:44:56.144.

moment("2019-11-08T17:44:56.144").format(moment.HTML5_FMT.DATE); // 2019-11-08

https://momentjs.com/docs/#/parsing/special-formats/

Mix Master Mike
fuente
4

Cada vez que uso la moment.jsbiblioteca, especifico el formato deseado de esta manera:

moment(<your Date goes here>).format("DD-MMM-YYYY")

o

moment(<your Date goes here>).format("DD/MMM/YYYY")

... etc Espero que tengas la idea

Dentro de la función de formato, pones el formato deseado. El ejemplo anterior eliminará todos los elementos no deseados de la fecha, como minutos y segundos.

Adrian Grzywaczewski
fuente
Esta no es una buena idea si alguna vez desea mostrar su contenido en diferentes configuraciones regionales. Si desea mostrar las fechas en el formato correcto para la configuración regional del usuario, es necesario utilizar uno de los formatos de fecha preestablecida ( L, LL, etc.)
AJ Richardson
¿Por qué configuras MMM tres veces?
Menai Ala Eddine - Aladdin
MMM le dará las 3 primeras letras del mes. 'Apr' MMMM le dará un nombre de mes completo
Adrian Grzywaczewski
4

Para las personas como yo queremos el formato de fecha larga ( LLLL) pero sin la hora del día, hay un problema de GitHub para eso: https://github.com/moment/moment/issues/2505 . Por ahora, hay una solución alternativa:

var localeData = moment.localeData( moment.locale() ),
    llll = localeData.longDateFormat( 'llll' ),
    lll = localeData.longDateFormat( 'lll' ),
    ll = localeData.longDateFormat( 'll' ),
    longDateFormat = llll.replace( lll.replace( ll, '' ), '' );
var formattedDate = myMoment.format(longDateFormat);
AJ Richardson
fuente
1
Finalmente una respuesta sensata. Tome mi voto a favor señor! El problema aún no se ha abordado, parece.
oyalhi
3

Puedes usar este constructor

moment({h:0, m:0, s:0, ms:0})

http://momentjs.com/docs/#/parsing/object/

console.log( moment().format('YYYY-MM-DD HH:mm:ss') )

console.log( moment({h:0, m:0, s:0, ms:0}).format('YYYY-MM-DD HH:mm:ss') )
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

acucchieri
fuente
Agregue alguna descripción de mineral aquí
Mathews Sunny
¡Esto es interesante! Está creando un momento y una hora, minutos y segundos primordiales, pero aún mantiene la fecha subyacente. Interesante porque habría adivinado que moment({h:0, m:0, s:0, ms:0})me habría dado el 1 de enero de 1970 en lugar de hoy.
Simon_Weaver
También parece que moment({ h: 0 })hace lo mismo.
Simon_Weaver
1
Los documentos dicenOmitted units default to 0 or the current date, month, and year.
Simon_Weaver
2

Prueba esto:

moment.format().split("T")[0]
Keith Blanchard
fuente
Cuidado con este método, ya que 1993-06-07T22:00:00.000Zdará como resultado que 1993-06-07mientras que es el inicio de la jornada de1993-06-08
Tom