2012-07-11 16 views

Odpowiedz

26

W większości nowszych przeglądarek masz .toISOString() metodę, ale w IE8 lub starszych można użyć następujących (zaczerpnięte z json2.js Douglas Crockforda):

// Override only if native toISOString is not defined 
if (!Date.prototype.toISOString) { 
    // Here we rely on JSON serialization for dates because it matches 
    // the ISO standard. However, we check if JSON serializer is present 
    // on a page and define our own .toJSON method only if necessary 
    if (!Date.prototype.toJSON) { 
     Date.prototype.toJSON = function (key) { 
      function f(n) { 
       // Format integers to have at least two digits. 
       return n < 10 ? '0' + n : n; 
      } 

      return this.getUTCFullYear() + '-' + 
       f(this.getUTCMonth() + 1) + '-' + 
       f(this.getUTCDate())  + 'T' + 
       f(this.getUTCHours())  + ':' + 
       f(this.getUTCMinutes()) + ':' + 
       f(this.getUTCSeconds()) + 'Z'; 
     }; 
    } 

    Date.prototype.toISOString = Date.prototype.toJSON; 
} 

teraz można bezpiecznie wywołać metodę `.toISOString().

+2

W ten sposób nadpiszesz metodę ECMA Script 5, również dla [przeglądarek, które ją obsługują] (http://kangax.github.com/es5-compat-table/). Dodaj warunek. –

+0

Dobry połów, @BeatRichartz! Odpowiednio zaktualizowałem swoją odpowiedź. –

+1

Zazwyczaj nie ma powodu, aby upuszczać informacje o strefie czasowej. Zobacz http://stackoverflow.com/a/15302113/277267 –

6

Istnieje metoda .toISOString() na datę. Można użyć dla przeglądarek z obsługą ECMA-Script 5. Dla osób bez zainstalować metody takie jak to:

if (!Date.prototype.toISOString) { 
    Date.prototype.toISOString = function() { 
     function pad(n) { return n < 10 ? '0' + n : n }; 
     return this.getUTCFullYear() + '-' 
      + pad(this.getUTCMonth() + 1) + '-' 
      + pad(this.getUTCDate()) + 'T' 
      + pad(this.getUTCHours()) + ':' 
      + pad(this.getUTCMinutes()) + ':' 
      + pad(this.getUTCSeconds()) + 'Z'; 
    }; 
} 
+0

Czy mógłbyś powtórzyć ten kod? – Bergi

Powiązane problemy