2016-07-26 9 views
0

Ich habe Ruhe-Server mit Node.JS und ExpressJS erstellt. Datenbank ist MySQL. Ich übermittle das Datum wie folgt vom Frontend.Datum ist nicht korrekt in Mysql mit NodeJS (ein Tag weniger als Real-Datum)

2016-7-26

Und wenn ich in die Datenbank gehen, ist es auf diese Weise gespeichert. Wie die folgenden:

2016-07-26 00:00:00

Da MySQL Datumsformat Zeitstempel ist. Und wenn ich das Ergebnis von REST ruls nehme, bekomme ich ein solches Datum.

"2016-07-25T18: 30: 00.000Z"

I 26 gespeichert Aber hier bekomme ich 25. Was für das der Grund ist? Zeitzonen ? Bitte sagen Sie mir, wie Sie dieses Problem beheben können.

+1

Sieht aus wie das Zeitzonenproblem. –

+0

Dies ist ein Zeitzonenproblem.Stellen Sie Ihre Datenbank auf UTC ein, es sei denn, Sie möchten ständig damit kämpfen. Verwenden Sie Zeitzonen nur in Ihrem Anwendungscode und selbst dann nur basierend auf einer Benutzereinstellung. – tadman

+0

Sie meinen, ändern Sie die Zeitzone der Datenbank in UTC? Tat dies. Funktioniert nicht –

Antwort

0

Dies liegt daran, Knoten konvertiert das Datum in ISOString und das Datum ist in GMT. Verwenden Sie .toLocaleString(); nachdem Sie die Daten aus der Datenbank abfragen.

Beispiel:

connection.query (yourDbQuery, Funktion (err, result) {if (result) {
var date = result.date.toLocaleString();}});

Auch Sie können den npm Moment installieren, der mit Daten sehr hilfreich ist.

zu installieren, benutzen

NPM installieren Moment

und den folgenden Code:

var = Moment erforderlich ('Moment'); date = moment (result.date) .format ('TT/MM/JJJJ');

+0

result.date = moment (neues Date()). format ('DD/MM/YYYY'); -> Was ist dieser Code? –

+0

Ich habe das obige bearbeitet. Das Ergebnis ist das Ergebnis der DB-Abfrage. result.date unter der Annahme, dass es sich um Ihr Datum von db, handelt, können Sie diese Zeile auch anstelle von result.date.toLocaleString(); –

+0

[email protected] -> mailen Sie mir –

0

In meinem Fall gibt .toLocalString() das gleiche iSOString-Format zurück. Also verwende ich meine eigene Coaded-Funktion, um die iSOString-Zeit in ein beliebiges Format zu konvertieren (In diesem Fall das UTC-Format).

ex .: 2018-02-09T12: 18: 23.000Z => 2018-02-09 12:18:23

Hier wie bin ich bin UTC Date Format bekommen:

var date = date_formate(new Date(result[0].date), "yyyy-MM-dd HH:mm:ss"); 

Enthalten Sie unten benutzerdefinierte Funktion in Ihrem Code.

function date_formate (date, format, utc) { 
    var MMMM = ["\x00", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
    var MMM = ["\x01", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; 
    var dddd = ["\x02", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; 
    var ddd = ["\x03", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; 

    var y = utc ? date.getUTCFullYear() : date.getFullYear(); 
    format = format.replace(/(^|[^\\])yyyy+/g, "$1" + y); 
    format = format.replace(/(^|[^\\])yy/g, "$1" + y.toString().substr(2, 2)); 
    format = format.replace(/(^|[^\\])y/g, "$1" + y); 

    var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1; 
    format = format.replace(/(^|[^\\])MMMM+/g, "$1" + MMMM[0]); 
    format = format.replace(/(^|[^\\])MMM/g, "$1" + MMM[0]); 
    format = format.replace(/(^|[^\\])MM/g, "$1" + this.pad(M, 2)); 
    format = format.replace(/(^|[^\\])M/g, "$1" + M); 

    var d = utc ? date.getUTCDate() : date.getDate(); 
    format = format.replace(/(^|[^\\])dddd+/g, "$1" + dddd[0]); 
    format = format.replace(/(^|[^\\])ddd/g, "$1" + ddd[0]); 
    format = format.replace(/(^|[^\\])dd/g, "$1" + this.pad(d, 2)); 
    format = format.replace(/(^|[^\\])d/g, "$1" + d); 

    var H = utc ? date.getUTCHours() : date.getHours(); 
    format = format.replace(/(^|[^\\])HH+/g, "$1" + this.pad(H, 2)); 
    format = format.replace(/(^|[^\\])H/g, "$1" + H); 

    var h = H > 12 ? H - 12 : H == 0 ? 12 : H; 
    format = format.replace(/(^|[^\\])hh+/g, "$1" + this.pad(h, 2)); 
    format = format.replace(/(^|[^\\])h/g, "$1" + h); 

    var m = utc ? date.getUTCMinutes() : date.getMinutes(); 
    format = format.replace(/(^|[^\\])mm+/g, "$1" + this.pad(m, 2)); 
    format = format.replace(/(^|[^\\])m/g, "$1" + m); 

    var s = utc ? date.getUTCSeconds() : date.getSeconds(); 
    format = format.replace(/(^|[^\\])ss+/g, "$1" + this.pad(s, 2)); 
    format = format.replace(/(^|[^\\])s/g, "$1" + s); 

    var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds(); 
    format = format.replace(/(^|[^\\])fff+/g, "$1" + this.pad(f, 3)); 
    f = Math.round(f/10); 
    format = format.replace(/(^|[^\\])ff/g, "$1" + this.pad(f, 2)); 
    f = Math.round(f/10); 
    format = format.replace(/(^|[^\\])f/g, "$1" + f); 

    var T = H < 12 ? "AM" : "PM"; 
    format = format.replace(/(^|[^\\])TT+/g, "$1" + T); 
    format = format.replace(/(^|[^\\])T/g, "$1" + T.charAt(0)); 

    var t = T.toLowerCase(); 
    format = format.replace(/(^|[^\\])tt+/g, "$1" + t); 
    format = format.replace(/(^|[^\\])t/g, "$1" + t.charAt(0)); 

    var tz = -date.getTimezoneOffset(); 
    var K = utc || !tz ? "Z" : tz > 0 ? "+" : "-"; 
    if (!utc) { 
     tz = Math.abs(tz); 
     var tzHrs = Math.floor(tz/60); 
     var tzMin = tz % 60; 
     K += this.pad(tzHrs, 2) + ":" + this.pad(tzMin, 2); 
    } 
    format = format.replace(/(^|[^\\])K/g, "$1" + K); 

    var day = (utc ? date.getUTCDay() : date.getDay()) + 1; 
    format = format.replace(new RegExp(dddd[0], "g"), dddd[day]); 
    format = format.replace(new RegExp(ddd[0], "g"), ddd[day]); 

    format = format.replace(new RegExp(MMMM[0], "g"), MMMM[M]); 
    format = format.replace(new RegExp(MMM[0], "g"), MMM[M]); 

    format = format.replace(/\\(.)/g, "$1"); 

    return format; 
} 
Verwandte Themen