将字符串中的日期转换为日期对象以插入数据库

时间:2015-09-06 08:20:20

标签: javascript mysql date

我想在javascript中将字符串中的日期转换为日期对象,以便我可以将其作为DATETIME插入到mysql数据库中。

我尝试new Date(date)工作正常here,但在我的js代码中,它没有正常工作。

这是代码:

str = "Sun Sep 06 2015 11:56:23 GMT+04:30"
new Date(str);

以下是结果:

2015-09-06T11:56:23.000Z 

here

的结果不同

并且在将其插入数据库时​​也会出现以下错误。

Incorrect datetime value: '2015-09-06T11:56:23.000Z' for column 'start_date' at row 1

那我怎样才能转换日期?

1 个答案:

答案 0 :(得分:2)

从这里开始:Get String in YYYYMMDD format from JS date object?

Date.prototype.yyyymmdd = function() {
    var yyyy = this.getFullYear().toString();
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
    var dd  = this.getDate().toString();
    return yyyy + "-" + (mm[1]?mm:"0"+mm[0]) + "-" + (dd[1]?dd:"0"+dd[0]); // padding
};

然后你可以:

str = "Sun Sep 06 2015 11:56:23 GMT+04:30"
new Date(str).yyyymmdd(); //returns "2015-09-06"

我们可以对原始功能进行一些修改,以包含时间

最终JavaScript

Date.prototype.YYYYMMDDhhmmss = function() {
    var YYYY = this.getFullYear().toString(),
        MM = (this.getMonth()+1).toString(),
        DD  = this.getDate().toString(),
        hh = this.getUTCHours().toString(),
        mm = this.getUTCMinutes().toString(),
        ss = this.getUTCSeconds().toString();
    return YYYY + "-" + (MM[1]?MM:"0"+MM[0]) + "-" + (DD[1]?DD:"0"+DD[0]) + " " + (hh[1]?hh:"0"+hh[0]) + ":" + (mm[1]?mm:"0"+mm[0]) + ":" + (ss[1]?ss:"0"+ss[0]);
};

然后:

str = "Sun Sep 06 2015 11:56:23 GMT+04:30"
new Date(str).YYYYMMDDhhmmss(); //returns "2015-09-06 07:26:23"

这样的YYYY-MM-DD hh:mm:ssYYYY-MM-DD可以用于数据库中的DateTime输入。