2016-04-27 11 views
2

Ich versuche, das aktuelle Datum im UTC-Format zu erhalten. Bis jetzt bin ich in der Lage, es zu tun, aber was ich feststelle, ist, dass es nach dem aktuellen "Systemdatum" sucht und das Ergebnis zurückgibt. Ich will das nicht passieren, weil ich es speziell im UTC-Format brauche und nicht, um das Systemdatum zu bekommen.Wie bekomme ich das Datum im UTC-Format unabhängig vom aktuellen Systemdatum mit Javascript?

Auch das Format, das ich ausgegeben habe, ist das Ergebnis, das ich ohne Änderungen darin haben möchte. Irgendwelche Vorschläge wären eine große Hilfe.

Hier ist mein Code:

var now = new Date(); 
var currentDate; 
var date = (new Date(now) + '').split(' '); 
date[0] = date[0] + ','; 
date[2] = date[2] + ','; 
currentDate = [date[0], date[1], date[2], date[3]].join(' '); 
return currentDate; 

Diese kehrt als Mi Apr26 2016. Wenn dieser Code woanders mit einer Zeitdifferenz von etwa + -12, wird das Datum sein, dass Systemdatum ausgeführt wird UTC was ich nicht will.

+1

UTC ist kein Format, es ist ein [* Zeitstandard *] (http://www.timeanddate.com/time/aboututc.html). Die einzige standardisierte Datumsformatierung ist * toISOString *, alle anderen Formatierungen sind implementierungsabhängig. Es gibt kleine Formatierungsbibliotheken wie [* date-format.js *] (https://github.com/barbir/js-date-format/blob/master/js/date-format.js) oder viel größere wie [* moment.js *] (http://momentjs.com/). Sie haben kein Format angegeben und auch nicht, warum das aktuelle Systemdatum nicht passt. – RobG

Antwort

0

Haben Sie in Momentjs untersucht? Es ist ein Date-Objekt-Wrapper, der das Bearbeiten von Daten vereinfacht. Verwenden Sie einfach die mitgelieferte Funktion utc(). http://momentjs.com/docs/#/manipulating/utc/

Nach Moment durch npm Installation, hier ist was Codebeispiel aussehen wird:

var moment = require("moment"); 

var utcNow = moment().utc(); 

console.log(utcNow); 

Dies wird Ausgangsstrom utc Datum

+1

Nein, nein, nein. Das ist wie bei jeder Javascript-Frage auf StackOverflow vor 7 Jahren, wo jede Frage mit jQuery beantwortet wurde. Einfach JavaScript lernen. MomentJS ist zwar eine nette Bibliothek, bedeutet aber, dass Sie einen halben MB JS zum Herunterladen und Parsen für Ihre Benutzer benötigen, und Sie enthalten nie eine ganze Bibliothek für nur eine Dienstprogrammfunktion. Das sollten Sie immer tun, wenn Sie Ihr gesamtes Projekt in ES2015 schreiben und einen Bundler wie Rollup verwenden, der nur die verwendeten Bits enthält. – oligofren

+2

@ oligofren - und ich dachte, ich wäre der einzige, der solche Kommentare schreibt! Natürlich wird 'new Date(). ToISOString()' ohne eine Bibliothek viel Ähnliches tun. – RobG

+0

Sorry Leute, ich bin auch neu! Ich versuche nur meinen Teil in der Gemeinschaft mit dem zu tun, was ich weiß.In allen Fällen, in denen ich bisher mit Daten gearbeitet habe, musste ich sie in großen Projekten verwenden, so dass es nie ein Problem war, eine hilfreiche Bibliothek einzubinden. Danke für den Tipp und daran werde ich mich beim nächsten Mal erinnern! – Cameron637

0

ich die toISOString() Methode zum Zeitpunkt Instanz aufrufen würde empfehlen. Hier ist der Code

var now = new Date, 
    isoNow = now.toISOString(); 
console.log(now, isoNow); // Wed Apr 27 2016 10:50:29 GMT+0530 (IST) "2016-04-27T05:20:29.146Z" 

So haben Sie Weltzeit hier

+0

Er wollte auch die Formatierung behalten. – oligofren

1

Wenn Sie die Ausgabe, die Sie erwähnt halten müssen, check this out:

var dateString = new Date().toUTCString().split(' '); 
return dateString[0] + " " + dateString[2] + dateString[1] + ", " + dateString[3]; 

Es gibt einige andere nützliche UTC Methoden für Termine here.

+0

Vorausgesetzt, dass [* toUTCString *] (http://www.ecma-international.org/ecma-262/6.0/#sec-date.prototype.toutcstring) ist Implementationsabhängig, der resultierende String könnte alles Mögliche sein – RobG

+0

["Das Format des Rückgabewerts kann je nach Plattform variieren. Der gebräuchlichste Rückgabewert ist ein RFC-1123-formatierter Datumsstempel, der eine geringfügig aktualisierte Version von RFC-822 darstellt Datumsstempel. "] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString) – oligofren

+1

@ oligofren-MDN ist ein öffentliches Wiki, es ist keine Sprachautorität Per [* ECMA-262 *] (http://www.ecma-international.org/ecma-262/6.0/#sec-date.prototype.toutcstring) (was ** die ** Autorität ist): "* Der Inhalt des Strings ist implementierungsabhängig, soll aber diesen Zeitwert in einer für UTC * bequemen, lesbaren Form darstellen. "Weiter geht es mit der Empfehlung Ende ISO 8601 erweitertes Format (obwohl in einer nicht-normativen Notiz). – RobG

2

Die einzige Möglichkeit, die Formatierung über alle Browser hinweg konsistent zu halten, besteht darin, entweder eine kleine Dienstprogrammfunktion mit den Funktionen Date#getUTC* zu erstellen oder eine Bibliothek zu verwenden, die dies für Sie erledigt. Ich würde mit dem ehemaligen gehen. Man könnte so etwas wie folgt verwenden:

function getUTCDateString(){ 
    var d = new Date(); 
    var days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; 
    var month = ['Jan', 'Feb', 'Mar', 'April', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 

    return (
     days[d.getUTCDay()-1] 
     + ', ' + month[d.getUTCMonth()] 
     + d.getUTCDate() 
     + ', ' + d.getUTCFullYear() 
     ); 
} 

Wenn Sie irgendwelche lokalisierten Programmierung Dinge schnell in die Komplexität erhöhen und erwähnt macht mehr Sinn, in einigen der Libs zu bringen.

Verwandte Themen