2012-10-12 20 views
20

chcę użyć plugin jquery timeago - http://timeago.yarp.com/Konwersja uniksowy znacznik czasu do ISO 8601

Mam znaczników czasu jak ten 1331209044000 i docs powiedzieć, że potrzebujemy ISO 8601 datownik.

Szczerze mówiąc nigdy nie słyszałem z ISO 8601.

jaki sposób można przekonwertować go?

Cheers

+0

Więcej informacji na temat standardu można znaleźć na stronie http://en.wikipedia.org/wiki/ISO_8601. Obawiam się, że po prostu musisz zbudować łańcuch na podstawie składników 'Date'. – Jacob

+2

To wygląda obiecująco: http://stackoverflow.com/questions/2573521/how-do-i-output-an-iso-8601-formatted-string-in-javascript – Aeoril

Odpowiedz

41

Zakładając, że znacznik czasu w milisekundach (lub można konwertować do milisekund łatwo), a następnie można użyć Date constructor i date.toISOString() method.

var s = new Date(1331209044000).toISOString(); 
s; // => "2012-03-08T12:17:24.000Z" 

Jeśli kierujesz starszych przeglądarek, które nie obsługują EMCAScript 5th Edition można użyć strategii wymienione w pytaniu: How do I output an ISO 8601 formatted string in JavaScript?

+0

To jest ECMAScript 5 - Zobacz tutaj dla kompatybilności i awaryjnego kod: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString – Aeoril

+1

Nie zapominaj, że uniksowy znacznik czasu jest w sekundach, ale JavaScript liczy się w milisekundach. Tak więc jest to właściwie 'new Date (timestamp * 1000) .toISOString();'. –

0

Rozwiązanie użyłem, dzięki linków podanych

// convert to ISO 8601 timestamp 
function ISODateString(d){ 
    function pad(n){return n<10 ? '0'+n : n} 
    return d.getUTCFullYear()+'-' 
     + pad(d.getUTCMonth()+1)+'-' 
     + pad(d.getUTCDate())+'T' 
     + pad(d.getUTCHours())+':' 
     + pad(d.getUTCMinutes())+':' 
     + pad(d.getUTCSeconds())+'Z' 
} 

var d = new Date(parseInt(date)); 
console.log(ISODateString(d)); 
+1

Oczywiście ta funkcja zakłada, że ​​data jest faktycznie w strefie czasowej Zulu (GMT + 0). – maerics

Powiązane problemy