2017-03-14 3 views
1

Ich habe ein Problem mit Daten in Mozilla, ich verwende Fullcalendar Plugin für angularJs in meinem Projekt. Während die Momentdaten verwendet werden, scheint Chrome gut zu funktionieren, aber Mozilla scheint zu brechen. Ich verwende Zeitzonen mit dem Moment. Viele Blogs und Posts scheinen das Format von Momentdaten zu erwähnen, während sie Probleme mit dem Browser haben.Momentdaten werden in Mozilla und Chrome anders geparst?

Hier ist sie,

console.log(moment(new Date('2017-02-28T18:30:00')).format('dddd-MMM DD,YYYY')); 

Mozilla: Dienstag-Feb 28,2017

Chrome: Mittwoch-Mar 01,2017

ich wirklich mit dieser steckte, und ich habe Post darüber gesehen, das Format mit den Momentdaten zu erwähnen, aber ich habe das Format im obigen Beispiel verwendet, aber es liefert nicht die gewünschte Ausgabe. Auf der anderen Seite gibt Chrome das korrekte Ergebnis zurück, was mache ich falsch?

Wenn Sie irgendwelche Details benötigen, hinterlassen Sie bitte einen Kommentar.

Antwort

3

Verwenden Sie nicht moment(new Date('2017-02-28T18:30:00')) verwenden Sie stattdessen moment(String) (da Ihre Eingabe im ISO 8601-Format ist).

Wie Moment parsing docs sagt:

Warnung: Browser-Unterstützung für das Parsen Strings is inconsistent. Da es keine Spezifikation gibt, welche Formate unterstützt werden sollen, funktionieren einige Browser in anderen Browsern nicht.

hier ein funktionstüchtiges Beispiel:

console.log(moment('2017-02-28T18:30:00').format('dddd-MMM DD,YYYY'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>


Wenn Sie Ihre Eingabe ist UTC verwenden moment.utc:

moment.utc('2017-02-28T18:30:00') 

Wenn Sie Ihre Eingabe in einem bestimmten ist Zeitzone (z.B. Asia/Calcutta) verwenden moment.tz(..., String);

moment.tz('2017-02-28T18:30:00', 'Asia/Calcutta') 

standardmäßig Moment Zeichenfolge in Ortszeit parst, müssen Sie Zeitzone Ihrer Eingabe kennen. Beachten Sie, dass der Moment local(), utc() und tz(String) Methoden hat, um die Zeitzone eines Momentobjekts zu ändern.

+0

Ich habe dies schon einmal versucht, jetzt fallen die Daten bis zum 28. Februar. Ich brauche es wie 1. März. – Jaychandran

+0

Versuch Moment (String) .utc(). Format ('DDDD-MMM DD, YYYY') – rrd

+0

@Jaychandran warum '2017-02-28T18: 30: 00' sollte als' 2017-03-01' interpretiert werden? Vielleicht müssen Sie Ihrer Frage Details hinzufügen. – VincenzoC

2

Sie konvertieren ein JS-Datum in ein MomentJS-Datum, sodass ich nur davon ausgehen kann, dass Firefox das JS-Datum anders analysiert.

Mit MomentJS sollten Sie in der Lage sein, einfach den Code zu ersetzen:

moment(new Date('2017-02-28T18:30:00')).format('dddd-MMM DD,YYYY') 

mit:

moment('2017-02-28T18:30:00').format('dddd-MMM DD,YYYY') 

https://momentjs.com/docs/#/parsing/

+0

Haben Sie dieses versucht, aber wie werden wir das bis zum 1. März wie die Chrom-Analyse – Jaychandran

+0

haben Sind Sie sicher, dass Chrom "2017-02-28T18: 30: 00" als 1. März anstelle einer anderen Zeichenfolge analysiert? Denn wenn ich nur auf das Datum schaue, kann ich nicht sehen, wie es am nächsten Tag geparst wird, wenn man nicht einen Tag hinzufügt. –

+0

Ja sicher, ich benutze Timezone an anderer Stelle – Jaychandran

0

, wenn Sie verwenden AngularJS, dann ist es einfacher zu bedienen filter.

$filter('date')('2017-02-28T18:30:00', "dd/MM/yyyy"); 
Verwandte Themen