Wie kann ich mit Moment.js die Uhrzeit vom Datum entfernen?


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

Es zeigt an: "28 februari 2013 09:24"

Aber ich möchte die Zeit am Ende entfernen. Wie kann ich das machen?

Ich benutze Moment.js .


Verwenden Sie die Split-Methode, um die Zeichenfolgen zu trennen
AmGates

Antworten:


605

Es tut uns leid, dass Sie so spät einspringen müssen, aber wenn Sie den Zeitteil von a entfernen möchten, moment()anstatt ihn zu formatieren , lautet der Code:

.startOf('day')

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


90
Seien Sie vorsichtig damit, wenn Sie zwischen Zeitzonen wechseln (oder wenn Sie Zeitzonen nicht beachten). Ich hatte ein Problem, bei dem mein UTC-Datum in Ortszeit umgerechnet wurde und sich dann bewarb startOf('day'). Dies war dann der Beginn des vorherigen Tages. moment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate()
Behoben

26
Achten Sie auch darauf, dass diese Funktion tatsächlich das ursprüngliche Objekt mutiert
Dirk Boer

6
.startOf('day')Entfernt den Zeitteil nicht per se, sondern setzt die Zeit nur auf 00:00:00. Also, ja, wie von 'collin' kommentiert, müssen Sie beim Speichern des Datums vorsichtig sein. Bessere Alternative ist die Verwendung format('LL'), wie in diesem Thread beantwortet wurde.
Sudarshan_SMD

4
Verwenden Sie someMoment.clone().startOf('day')oder, um eine Mutation des Originalobjekts zu vermeiden moment(someMoment).startOf('day').
Pang

Seien Sie vorsichtig, startOf ('Tag') setzt alles zurück und stellt nicht nur die Zeit auf 00:00:00 ein. moment().utc().add(1,'d').startOf('day')wird das Objekt auf heute zurücksetzen.
Tristan

49

Verwenden format('LL')

Je nachdem, was Sie damit machen wollen, format('LL')könnte dies der Trick sein. Es produziert so etwas:

Moment().format('LL'); // => April 29, 2016

26

Der richtige Weg wäre, die Eingabe gemäß Ihren Anforderungen anzugeben, um mehr Flexibilität zu erhalten.

Die vorliegende Definition umfasst Folgendes

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'

Sie können eine dieser Optionen verwenden oder die Eingabe ändern, die in moment (). Format () übergeben wird. Zum Beispiel können Sie für Ihren Fall bestehen moment.utc(dateTime).format('MMMM D, YYYY').


9
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LL')
}

6

Sie können auch dieses Format verwenden:

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


6

Mit neueren Versionen von moment.js können Sie dies auch tun:

var dateTime = moment();

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

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


Wäre es nicht date: dateTime.date()stattdessen day: dateTime.date()?
Philfreo

1
"Tag und Datum bedeuten beide den Tag des Monats." aus den Dokumenten. dayfunktioniert vor Version 2.8.4.
Oldwizard

6

Okay, ich weiß, dass ich viel zu spät zur Party komme. Wie 6 Jahre zu spät, aber das war etwas, was ich herausfinden und formatieren musste JJJJ-MM-TT.

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

Sie können auch einen Parameter wie , 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/


4

Wann immer ich die moment.jsBibliothek benutze, gebe ich das gewünschte Format folgendermaßen an:

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

oder

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

... usw. Ich hoffe du kommst auf die Idee

Innerhalb der Formatierungsfunktion geben Sie das gewünschte Format ein. Im obigen Beispiel werden alle unerwünschten Elemente ab dem Datum wie Minuten und Sekunden entfernt


Dies ist keine gute Idee, wenn Sie Ihre Inhalte jemals an verschiedenen Orten anzeigen möchten. Wenn Sie in dem richtigen Format für den Benutzer locale Anzeigedaten mögen, müssen Sie eine der voreingestellten Datumsformate verwenden ( L, LLusw.)
AJ Richardson

Warum Sie MMM dreimal einstellen.
Menai Ala Eddine - Aladdin

MMM gibt Ihnen die 3 ersten Buchstaben des Monats. 'Apr' MMMM gibt Ihnen einen vollständigen Monatsnamen
Adrian Grzywaczewski

4

Für Leute wie mich, die das lange Datumsformat ( LLLL) wollen, aber ohne Tageszeit, gibt es dafür ein GitHub-Problem: https://github.com/moment/moment/issues/2505 . Im Moment gibt es eine Problemumgehung:

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);

1
Endlich eine vernünftige Antwort. Nehmen Sie meine positive Stimme, Sir! Das Problem wurde anscheinend noch nicht behoben.
Oyalhi

3

Sie können diesen Konstruktor verwenden

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>


Fügen Sie hier eine
Erzbeschreibung hinzu

Das ist interessant! Es schafft einen Moment und überschreibt Stunde, Minuten und Sekunden, behält aber immer noch das Datum des Untergebenen bei. Interessant, weil ich vermutet moment({h:0, m:0, s:0, ms:0})hätte, dass ich den 1. Januar 1970 und nicht heute erhalten hätte.
Simon_Weaver

Sieht moment({ h: 0 })auch so aus.
Simon_Weaver

1
Die Dokumente sagenOmitted units default to 0 or the current date, month, and year.
Simon_Weaver

2

Versuche dies:

moment.format().split("T")[0]

Schauen Sie mit dieser Methode aus, als 1993-06-07T22:00:00.000ZFolge wird , wie 1993-06-07während es der Beginn des Tages der ist1993-06-08
Tom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.