【问题标题】:Convert date in string to date object for inserting in database将字符串中的日期转换为日期对象以插入数据库
【发布时间】:2015-09-06 08:20:20
【问题描述】:

我想将字符串中的日期转换为 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

那么如何转换日期呢?

【问题讨论】:

  • MySQL 字段类型应该是timestamp
  • @DanielCheung,我想要日期时间格式!

标签: javascript mysql date


【解决方案1】:

从这里: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 在数据库中输入都可以。

【讨论】:

  • @user3933607 我已经更新了我的答案以包含时间,我一开始就忘记了。
  • 它转换时区,如何转换同一时区的时间?
  • @user3933607 您不应该使用本地时间,即使 php 也强制您设置时区。 JS 是客户端的,所以时间是相对的。但是如果你想要当地时间,请从 3 Date 方法中删除 UTC,这样它们就变成了getHours 等等
  • @user3933607 我重新阅读了您的评论。看来我理解错了。如果要将 UTC (GMT+0) 时区转换为美国时间,则必须在 PHP 中进行。您首先在 PHP 文档中设置时区。它会自动解释(或者您可能需要脚本)您设定的时区的时间。最好以 UTC 时间或 UNIX 时间戳存储。
猜你喜欢
  • 2020-05-21
  • 2020-11-30
  • 1970-01-01
  • 2021-08-01
  • 2012-01-28
  • 2011-03-07
  • 1970-01-01
  • 2016-05-24
相关资源
最近更新 更多