2012-07-11 18 views

Antwort

26

In den meisten neueren Browsern Sie .toISOString() Methode, aber in IE8 oder älter sind, können Sie die folgenden Befehle verwenden (von json2.js von Douglas Crockford genommen):

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

Jetzt können Sie sicher rufen `.toISOString (Methode).

+2

Damit überschreiben Sie die ECMA Script 5-Methode, auch für die [Browser, die dies unterstützen] (http://kangax.github.com/es5-compat-table/). Bitte fügen Sie eine Bedingung hinzu. –

+0

Guter Fang, @BeatRichartz! Ich habe meine Antwort entsprechend aktualisiert. –

+1

Normalerweise gibt es keinen Grund, die Zeitzoneninformationen zu löschen. Siehe http://stackoverflow.com/a/15302113/277267 –

6

Es gibt die .toISOString() Methode am Datum. Sie können das 5. ohne Für die Suche nach ECMA-Script mit Unterstützung für Browser verwenden, installieren Sie die Methode wie folgt:

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

Könnten Sie bitte diesen Code reindent? – Bergi

Verwandte Themen