2016-04-27 5 views
-2

Ich habe den folgenden Code, um ein langes Datumsformat in JavaScript in mm/dd/yyyy zu konvertieren. Wenn newValu "Datum 2016-12-29T00: 00: 00.000Z" aus dem Konsolenprotokoll ist, wird date_str einen Tag zurückgehen, wird "28.12.2016". Nicht sicher, was das Problem verursacht. Wenn wir die d (Tag) um 1 erhöht, wird das nicht funktionieren, weil wir den Monat statt erhöhen könnte müssen, wenn d = 31.JavaScript konvertiert langes Datumsformat in mm/dd/yyy

     console.log(newValue); 
         var date = newValue; 
         var d = date.getDate(); 
         var m = date.getMonth() + 1; 
         var y = date.getFullYear(); 
         date_str = (m<=9 ? '0' + m : m) + '/' + (d <= 9 ? '0' + d : d) + "/" + y; 
+1

Mögliches Duplikat [Format Datum MM/TT/JJJJ in Javascript] (http://stackoverflow.com/questions/11591854/format-date-to-mm-dd-yyyy-in-javascript) –

+0

10 Was ist * newValue *, ein String oder Date-Objekt? – RobG

Antwort

0

Hier ein Tipp:

function change(date) { 
     var r = String(date).match(/^\s*([0-9]+)\s*-\s*([0-9]+)\s*-\s*([0-9]+)(.*)$/); 
     return r[2] + "-" + r[3] + "-" + r[1] + r[4]; 
    } 

Diese Funktion gibt ein "MM/TT/JJJJ" zurück.

0

Nicht sicher, was das Problem verursacht.

Wenn newValue ein Date-Objekt ist und wenn Sie "2016-12-29T00: 00: 00.000Z" erhalten auf der Konsole ausgegeben, beachten Sie, dass das GMT ist.

Wenn das Host-System eine Zeitzone westlich von GMT hat (z. B. -0400), lautet das entsprechende Datum "2016-12-28T20: 00: 00.000Z", dh 4 Stunden früher (und am vorherigen Tag) . Wenn Sie Ebene verwenden bekommen Methoden (getDate, getHours, getMinutes, etc.), dann ist es diese Werte Sie bekommen.

Ihre Datumszeichenfolge ist also korrekt für die Zeitzone des Host-Systems.

var x = new Date('2016-12-29T00:00:00.000Z'); 
 

 
// Local equivalent on your host system 
 
document.write(x); 
 

 
// UTC values in ISO 8601 format 
 
document.write('<br>' + x.toISOString()); 
 

 
// Date string from ISO parts 
 
document.write('<br>'+ ('0'+(x.getUTCMonth()+1)).slice(-2) + '-' + 
 
       ('0'+x.getUTCDate()).slice(-2) + '-' + 
 
       x.getUTCFullYear());

Wenn Sie die Werte in Ihrem Datum Zeichenfolge wollen, ist der UTC-Wert des Date-Objekts entspricht dann UTC Methoden verwenden:

var d = date.getUTCDate(); 
var m = date.getUTCMonth() + 1; 
var y = date.getUTCFullYear(); 
Verwandte Themen