2016-07-26 1079 views
0

我使用Node.JS和ExpressJS創建了其他服務器。數據庫是MySQL。 我從前臺如下通過日期。使用NodeJS在mysql中日期不正確(比實際日期少一天)

2016年7月26日

當我去到數據庫,它保存這樣。如下所示:

2016年7月26日0點00分00秒

因爲MySQL日期格式時間戳。當我從REST流程中得到結果時,我會得到這樣的日期。

「2016-07-25T18:30:00.000Z」

我救了26但在這裏,我得到25什麼是這個原因?時區 ?請告訴我如何解決這個問題。

+1

看起來像時區問題。 –

+0

這是一個時區問題。將你的數據庫設置爲UTC,除非你想不斷地與之對抗。僅在您的應用程序代碼中使用時區,甚至僅基於用戶首選項。 – tadman

+0

您的意思是將數據庫時區更改爲UTC?做過某事。不工作 –

回答

0

這是因爲節點將日期轉換爲ISOString並且日期是GMT。 使用.toLocaleString();從數據庫中查詢數據後,您需要輸入

實施例:

connection.query(yourDbQuery,函數(ERR,結果){如果(結果){
變種日期= result.date.toLocaleString();}});

此外,您可以安裝npm時間,這是非常有用的日期。

安裝,使用

NPM安裝力矩

,並使用以下代碼:

變種力矩=要求( '力矩'); date = moment(result.date).format('DD/MM/YYYY');

+0

result.date = moment(new Date()).format('DD/MM/YYYY'); - >這個代碼是什麼? –

+0

我編輯了上述內容。 結果是數據庫查詢的結果。 result.date假設你是db的日期, 你也可以用這行代替result.date.toLocaleString(); –

+0

[email protected] - >給我發電子郵件 –

0

在我的情況下,.toLocalString()返回相同的iSOString格式。因此,我使用自己的加載函數將iSOString時間轉換爲任何格式(在本例中爲UTC格式)。

例:2018-02-09T12:18:23.000Z => 2018年2月9日12時18分23秒

下面是我得到UTC日期格式:

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

將下面的自定義函數包含在代碼中。

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