2013-08-31 12 views
5

Próbuję wysłać znacznik czasu UTC do usługi odpoczynkowej z mojego klienta javascript. Nie byłem w stanie stworzyć znacznika czasu, takiego jak "2013-08-30T19:52:28.226Z" przy użyciu javascript.Tworzenie czasu UTC w kodzie JavaScript

var rawDate = date.getUTCDate().toString(); 

Widzę ten przykład, ale nie jest dla mnie pomocny. utc-time-stame-javascript

+0

Czy chodziło Ci o 'nową datę()'? Zwraca (pełną) aktualną datę, ze wszystkimi właściwościami obiektu Date, w twoim przypadku '(new Date()). ToJSON()' powinno działać –

+0

Jak moje pytanie chcę 2013-08-31T9: 4: 51.859 Z w js –

+0

nowa data(). ToJSON() powrót 2013-08-31T09: 04: 51.863Z –

Odpowiedz

8

Można użyć date.toJSON().

new Date().toJSON().toString() 
"2013-08-31T09:05:07.740Z" 

Zobacz MDN lub MSDN

+0

zobacz mój wynik pożądania 2013-08-31T9: 9: 55.893Z –

+0

Oh ow. Link do W3 Schools? Oto lepszy zasób omawiający funkcję: [MDN Data # toJSON] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON?redirectlocale=en-US&redirectslug=JavaScript % 2FReference% 2FGlobal_Objects% 2FDate% 2FtoJSON) –

+0

Na czym polega problem W3 Schools? –

0

1) Get datę.

var now = new Date(); 

2) Konwersja do formatu UTC, jak poniżej, dla reference.

var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 
        now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 

3) Przy pomocy toJSON, pobierz format.

now_utc.toJSON() 

Wreszcie

var now = new Date(); 
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 
alert(now_utc.toJSON()); 

Sprawdź to JSFiddle

+0

Nie utc time .. 2013-08-31T03: 44: 49.000Z –

1
function getUTCISODateString(d){ 
    function pad(n){return n<10 ? '0'+n : n}; 
    function threePad(n){return n<10 ? '00'+n : (n < 100 ? '0' + n : n)}; 
    return d.getUTCFullYear()+'-' 
      + pad(d.getUTCMonth()+1)+'-' 
      + pad(d.getUTCDate())+'T' 
      + pad(d.getUTCHours())+':' 
      + pad(d.getUTCMinutes())+':' 
      + pad(d.getUTCSeconds())+ '.' 
        + threePad(d.getUTCSeconds()) + 'Z'; 
} 

nie testowano:

+0

'nowa data(). ToJSON()' –

+0

@izuriel yes ofcourse, jeśli IE7 nie jest celem. – sabithpocker

+0

Jeśli IE7 byłaby troską o wsparcie, to przyniosłabym bibliotekę podobną do [json2] (https://github.com/douglascrockford/JSON-js), aby wyposażyć tę funkcjonalność w 'Date' oraz' JSON.stringify 'i' JSON.parse'. –

0

Ta biblioteka może zrobić to za Ciebie. Nie dlatego, że duża albo http://momentjs.com

moment().toISOString() 
// 2013-02-04T22:44:30.652Z 
+0

Format jest wyłączony. Jego wymagania wymagają podania milisekund przed strefą czasową. –

+0

@izuriel Zaktualizowana odpowiedź, biblioteka ma dowolny format –

+0

Włączenie "momentu" tutaj (podczas gdy świetna biblioteka) jest niepotrzebne, chyba że konieczne jest dalsze przetwarzanie daty. Jak odpowiedział Benoit Blanchon, można to osiągnąć natywnie za pomocą 'new Date(). ToJSON()', ale jeszcze prostsze z 'JSON.stringify ({post_date: new Date()}) ;, w takim przypadku jest wywoływany automatycznie. Powinienem wspomnieć o tym wcześniej, ale dobrze o aktualizacji! –

0

chciałbym zaproponować rozszerzenie Date() obiektu i budowanie ciąg siebie, chwila zrobi to za Ciebie, ale nie jestem pewien, że to dokładnie w formacie trzeba. Po prostu napisałem to szybko, ale powinien to być porządny startowy talerz kotłowy.

Date.prototype.toLongUTCString = function() { 
    var self = this; 
    return self.getUTCFullYear() + '-' + (self.getUTCMonth() < 10 ? '0' : '') + 
      (self.getUTCMonth() +1)+ '-' + (self.getUTCDate() < 10 ? '0' : '') + 
      self.getUTCDate() + 'T' + self.getUTCHours() + ':' + self.getUTCMinutes() + 
      ':' + self.getUTCSeconds() + '.' + self.getUTCMilliseconds() + 'Z'; 
    }; 

Zobacz więcej:

http://jsfiddle.net/4Kczy/

/edit: nikt nie przejął się, żeby zapytać, co przeglądarek muszą być obsługiwane (kaszel, IE).

+0

Ta funkcjonalność może zostać dodana do klasy' Date' oraz pełnego parsowania/tworzenia ciągów 'JSON' przy użyciu [json2] (https://github.com/douglascrockford/JSON-js) biblioteka. Jedną z powszechnych zasad jest unikanie rozszerzania klas podstawowych w jak największym stopniu. –

+0

@izuriel - zależy to od tego, co wysuwasz - np. ta funkcja nigdy nie zostanie zaimplementowana w specyfikacji głównej (w przeciwieństwie do map/filter/reduce może zostać zaimplementowana w pewnym momencie w przyszłości w IE). Jeśli chodzi o bibliotekę json2 - nie zawsze potrzebna jest piła do wycinania gałęzi. Twoje zdrowie! – konp

Powiązane problemy