2012-10-12 14 views
20

voglio usare il plugin jQuery timeago - http://timeago.yarp.com/Convertire timestamp Unix a ISO 8601

ho timestamp come questo 1331209044000 e la documentazione dire che ho bisogno di un 8601 timestamp ISO.

Per essere onesti non ho mai sentito parlare di ISO 8601.

Come posso convertire?

Acclamazioni

+0

Vedere http://en.wikipedia.org/wiki/ISO_8601 per ulteriori informazioni sullo standard. Temo che tu debba semplicemente costruire una stringa basata sui componenti "Date". – Jacob

+2

Questo sembra promettente: http://stackoverflow.com/questions/2573521/how-do-i-output-an-iso-8601-formatted-string-in-javascript – Aeoril

risposta

41

Assumendo che il timestamp è in millisecondi (o si può convertire in millisecondi facilmente) quindi è possibile utilizzare il Date constructor e date.toISOString() method.

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

Se il target vecchi browser che non supportano script EMCAScript 5th Edition, è possibile utilizzare le strategie elencate in questa domanda: How do I output an ISO 8601 formatted string in JavaScript?

+0

Questo è ECMAScript 5 - Vedi qui per compatibilità e fallback codice: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString – Aeoril

+1

Non dimenticare che unix timestamp è in secondi, ma Javascript conta in millisecondi. Quindi in realtà è 'new Date (timestamp * 1000) .toISOString();'. –

0

La soluzione che ho usato, grazie ai collegamenti forniti

// 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

Ovviamente, questa funzione presuppone che la data sia effettivamente nel fuso orario Zulu (GMT + 0). – maerics