我想在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
那我怎样才能转换日期?
答案 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"
我们可以对原始功能进行一些修改,以包含时间:
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:ss
或YYYY-MM-DD
可以用于数据库中的DateTime
输入。