2016-07-26 1077 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; 
}