转换一个MySQL日期为Javascript日期

问题描述:

什么将是一个MySQL日期格式转换成JavaScript Date对象的最佳方式?转换一个MySQL日期为Javascript日期

mySQL的日期格式为 'YYYY-MM-DD'(ISO格式)。将是我的优先选择

+1

你是否有一个具体问题?你试过什么了? AAre在日期传递给javascript Date对象时有问题吗? – Zak 2009-11-19 19:15:27

+0

Date.parse('2009-01-01');不起作用。试图找到一种方法来转换它。日期是通过来自另一家公司的json对象来的,它以ISO格式返回日期。 – 2009-11-19 19:22:08

鉴于你澄清,你不能改变传入的日期格式,你需要的东西是这样的:

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给秒。

+0

我无法改变数据返回给我的方式。我有ISO格式的日期,我需要在客户端进行转换。 – 2009-11-19 19:23:59

UNIX timestamp(自1970年1月1日毫秒)。

可以围绕把它作为一个整数,并使用JS setTime()方法从它使一个JS Date对象。

您可以分割日期“ - ”作为分隔符,并使用此构造函数:

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

以及如何将它分割? – 2009-11-19 19:24:29

+0

if ds ='YYYY-MM-DD':ds.split(' - ') – 2009-11-19 20:07:02

在这看来做的确实是OP想要的,并且使用jhurshman的回答,所以我+1了它,但它是不完整的,因为它将使用00:00:00 GMT-0500 (CDT)作为时间部分,因为它没有传递给日期对象(var jsDate)。

万一别人是希望创建完整Javascriptdate 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)); 

它会在浏览器返回当前时区为正在创建的日期对象,但我会做在大多数情况下与后端的时区转换。

建立到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] 
      ); 

最短的和快速的方法:

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

终于一个班轮!谢谢! – arod 2015-10-06 23:02:14

+0

好戏!非常感谢你! – nobody 2016-03-28 15:31:38

+0

没有为我工作。我将替换语句更改为:replace(/ [ - ]/g,'/') – 2017-11-02 12:37:39

在AngularJS这样,由于@Jonas Sciangula街

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

mySqlDate格式为“yyyy-mm-dd”。

var javaDate = new Date(mySqlDate); 

这行代码工作正常,我。

+0

也可以使用“yyyy-mm-dd hh:ii:ss”格式 – ling 2017-08-15 19:19:17

虽然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>