将mySQL日期转换为Javascript日期

时间:2009-11-19 19:13:38

标签: javascript mysql date

将mysql日期格式日期转换为javascript Date对象的最佳方法是什么?

mySQL日期格式为'YYYY-MM-DD'(ISO格式)。

13 个答案:

答案 0 :(得分:43)

如果您澄清了无法更改传入日期的格式,则需要以下内容:

var dateParts = isoFormatDateString.split("-");
var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0,2));

原始回复:

是否有理由不能获取时间戳而不是日期字符串?这可以通过以下方式完成:

 SELECT UNIX_TIMESTAMP(date) AS epoch_time FROM table;

然后将epoch_time引入JavaScript,这很简单:

var myDate = new Date(epoch_time * 1000);

乘以1000是因为JavaScript需要几毫秒,而UNIX_TIMESTAMP则需要几秒钟。

答案 1 :(得分:28)

最短快速的方法:

var mySQLDate = '2015-04-29 10:29:08';
new Date(Date.parse(mySQLDate.replace('-','/','g')));

答案 2 :(得分:2)

UNIX timestamp(自1970年1月1日以来的毫秒数)将是我的首选。

您可以将它作为整数传递,并使用JS setTime()方法从中创建JS Date对象。

答案 3 :(得分:2)

以AngularJS方式,感谢@Jonas Sciangula Street

.filter('toJSDate', function(){
        return function (dateString) {
            return new Date(Date.parse(dateString.replace('-','/','g')))
        };
    })

答案 4 :(得分:2)

现在 javascript 可以轻松做到这一点,不再需要 moment.js 或类似的 :) 人类可读和所需的语言。

var MySQLDate = '2021-01-26 16:35:00';

var JavaScriptDate1 = new Date(MySQLDate).toLocaleDateString(
      'es-CO',
      {
        year: 'numeric',
        month: 'long',
        day: 'numeric',
        hour12: true,
        hour: '2-digit',
        minute: '2-digit'
      }
);
var JavaScriptDate2 = new Date(MySQLDate).toLocaleDateString(
      'ko-KR',
      {
        year: 'numeric',
        month: 'long',
        day: 'numeric',
        hour12: false,
        hour: '2-digit',
        minute: '2-digit'
      }
);

console.log(JavaScriptDate1);
console.log(JavaScriptDate2);

See more info here

答案 5 :(得分:1)

偶然发现这个看起来正是OP想要的,并且使用了jhurshman回答所以我+ 1编辑了它,但它不完整,因为它将使用00:00:00 GMT-0500 (CDT)作为时间部分,因为它不是传递给日期对象(var jsDate)。

如果其他人想要创建完整的Javascript date object

<强>例如:

Sat Mar 29 2014 23:24:28 GMT-0500 (CDT)

基于MySQL DATETIME格式

<强>例如:

'9999-12-31 23:59:59'.

您需要使用以下内容:

var dateParts = isoFormatDateString.split("-");
var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0, 2), dateParts[2].substr(3, 2), dateParts[2].substr(6, 2), dateParts[2].substr(9, 2));

当您创建日期对象时,它将在浏览器当前时区返回,但在大多数情况下,我会在后端进行时区转换。

答案 6 :(得分:1)

mySqlDate的格式为&#34; yyyy-mm-dd&#34;。

var javaDate = new Date(mySqlDate);

这行代码对我来说很好。

答案 7 :(得分:0)

您可以将日期' - '拆分为分隔符并使用此构造函数:

var d = new Date(Y, M - 1, D);

答案 8 :(得分:0)

建立Jhurisman的答案。如果您还想设置日期时间,请使用以下内容:

var dateParts = mysqlDate;
var timeParts = dateParts[2].substr(3).split(":");

var jsDate = new Date(
                dateParts[0],
                dateParts[1] - 1,
                dateParts[2].substr(0,2),
                timeParts[0],
                timeParts[1],
                timeParts[2]
            );

答案 9 :(得分:0)

虽然JS确实拥有足够的基本工具来执行此操作,但使用起来非常简单

/**
 * Ashu, You first need to create a formatting function to pad numbers to two digits…
 **/
function twoDigits(d) {
    if(0 <= d && d < 10) return "0" + d.toString();
    if(-10 < d && d < 0) return "-0" + (-1*d).toString();
    return d.toString();
}


Date.prototype.toMysqlFormat = function() {
    return this.getUTCFullYear() + "-" + twoDigits(1 + this.getUTCMonth()) + "-" + twoDigits(this.getUTCDate()) + " " + twoDigits(this.getUTCHours()) + ":" + twoDigits(this.getUTCMinutes()) + ":" + twoDigits(this.getUTCSeconds());
};


var date = new Date();

document.getElementById("date").innerHTML = date;
document.getElementById("mysql_date").innerHTML = date.toMysqlFormat();
console.log(date.toMysqlFormat());
Simple date:<div id="date"></div>

Converted Mysql Fromat: <div id="mysql_date"></div>

答案 10 :(得分:0)

function getJsDate(sqlDate){
    var returnValue;
    var timeString="00:00:00";
    try{
        var dateArray=sqlDate.trim().split(" ");
        var dateString=dateArray[0];
        if(dateArray.length>1){timeString=dateArray[1];}
        console.log(timeString);
        var yyyymmddArray=dateString.trim().split("-");
        var hhmmssArray=timeString.trim().split(":");
        returnValue = new Date(yyyymmddArray[0], (yyyymmddArray[1]-1), yyyymmddArray[2], hhmmssArray[0], hhmmssArray[1], hhmmssArray[2]);
    }catch(err){
        console.log("Error: "+ err.message);
    }
    return returnValue;
}

答案 11 :(得分:0)

也许是这样吗?

[Y,M,D,h,m,s] = '2020-11-06 16:00:00'.split(/[- :]/)

答案 12 :(得分:0)

这里是转换时间格式的函数。

Concat  Fecha   ID  Nombre  Doc Doc2    Prod    Cantidad
0   123120210306    2021-03-06 00:00:00 1   Lolo    123 1   1564    1
1   123120210306    2021-03-06 00:00:00 1   Lolo    123 1   1674    2
2   123120210306    2021-03-06 00:00:00 1   Lolo    123 1   15665   1
3   123120210307    2021-03-07 00:00:00 6   Lolo    123 1   15665   1
4   125120210306    2021-03-06 00:00:00 2   Momo    125 1   1568    2
5   125220210306    2021-03-06 00:00:00 5   Coco    125 2   1568    1
6   136220210306    2021-03-06 00:00:00 3   PePe    136 2   1568    1
7   136220210306    2021-03-06 00:00:00 3   PePe    136 2   1678    1