将MySqldate时间戳转换为JavaScript的date格式

有谁知道我怎么可以采取一个MySQL的datetime数据types的值,如YYYY-MM-DD HH:MM:SS并parsing它或将其转换为JavaScript的Date()函数,例如: – date('YYYY ,MM,DD,HH,MM,SS);

谢谢!

这里给出的一些答案要么过于复杂,要么就不起作用(至less不是所有的浏览器)。 如果退后一步,可以看到MySQL时间戳记的每个时间组成部分与Date()构造函数所需的参数顺序相同。

所有需要的是对string的一个非常简单的拆分:

 // Split timestamp into [ Y, M, D, h, m, s ] var t = "2010-06-09 13:12:01".split(/[- :]/); // Apply each element to the Date function var d = new Date(Date.UTC(t[0], t[1]-1, t[2], t[3], t[4], t[5])); console.log(d); // -> Wed Jun 09 2010 14:12:01 GMT+0100 (BST) 

公平的警告:这假设你的MySQL服务器正在输出UTCdate(这是默认的,并build议如果没有string的时区组件)。

添加到优秀的安迪E答案的一个常用的function可能是:

 Date.createFromMysql = function(mysql_string) { var t, result = null; if( typeof mysql_string === 'string' ) { t = mysql_string.split(/[- :]/); //when t[3], t[4] and t[5] are missing they defaults to zero result = new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0); } return result; } 

通过这种方式给出了"YYYY-MM-DD HH:MM:SS"forms的MySQLdate/时间,或者甚至是简短forms(仅限于date) "YYYY-MM-DD"你可以这样做:

 var d1 = Date.createFromMysql("2011-02-20"); var d2 = Date.createFromMysql("2011-02-20 17:16:00"); alert("d1 year = " + d1.getFullYear()); 

我想我可能find了一个更简单的方法,没有人提到。

MySQL DATETIME列可以通过以下方式转换为unix时间戳:

 SELECT unix_timestamp(my_datetime_column) as stamp ... 

我们可以使用自时代以来需要几毫秒的构造函数来创build一个新的JavaScript Date对象。 unix_timestamp函数返回自纪元以来的秒数,所以我们需要乘以1000:

 SELECT unix_timestamp(my_datetime_column) * 1000 as stamp ... 

结果值可以直接用来实例化一个正确的Javascriptdate对象:

 var myDate = new Date(<?=$row['stamp']?>); 

希望这可以帮助。

现代浏览器的一个class轮(IE10 +):

 var d = new Date(Date.parse("2010-06-09 13:12:01")); alert(d); // Wed Jun 09 2010 13:12:01 GMT+0100 (GMT Daylight Time) 

只是为了好玩,这里是一个可以在旧版浏览器(现在已经修复)中使用的单行代码:

 new (Function.prototype.bind.apply(Date, [null].concat("2010-06-09 13:12:01".split(/[\s:-]/)).map(function(v,i){return i==2?--v:v}) )); alert(d); // Wed Jun 09 2010 13:12:01 GMT+0100 (GMT Daylight Time) 

最近的JavaScript版本将会读取一个ISO8601格式的date,所以你所要做的就是把空间改成'T',做下面的一个操作:

 #MySQL select date_format(my_date_column,'%Y-%m-%dT%T') from my_table; #PHP $php_date_str = substr($mysql_date_str,0,10).'T'.substr($mysql_date_str,11,8); //JavaScript js_date_str = mysql_date_str.substr(0,10)+'T'+mysql_date_str.substr(11,8); 

进一步添加到Marco的解决scheme。 我直接原型的String对象。

 String.prototype.mysqlToDate = String.prototype.mysqlToDate || function() { var t = this.split(/[- :]/); return new Date(t[0], t[1]-1, t[2], t[3]||0, t[4]||0, t[5]||0); }; 

这样你可以直接去:

 var mySqlTimestamp = "2011-02-20 17:16:00"; var pickupDate = mySqlTimestamp.mysqlToDate(); 

从安迪的答案 ,为AngularJS – filter

 angular .module('utils', []) .filter('mysqlToJS', function () { return function (mysqlStr) { var t, result = null; if (typeof mysqlStr === 'string') { t = mysqlStr.split(/[- :]/); //when t[3], t[4] and t[5] are missing they defaults to zero result = new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0); } return result; }; }); 
 var a=dateString.split(" "); var b=a[0].split("-"); var c=a[1].split(":"); var date = new Date(b[0],(b[1]-1),b[2],b[0],c[1],c[2]); 

首先,您可以将JavaScript的Date对象(类)作为fromMD()的新方法,将YMD的date格式转换为JavaScript格式,方法是将YMD格式分解为若干组件,并使用这些date组件:

 Date.prototype.fromYMD=function(ymd) { var t=ymd.split(/[- :]/); //split into components return new Date(t[0],t[1]-1,t[2],t[3]||0,t[4]||0,t[5]||0); }; 

现在你可以定义你自己的对象(JavaScript世界中的funcion):

 function DateFromYMD(ymd) { return (new Date()).fromYMD(ymd); } 

现在你可以简单地从MySQLdate格式创builddate;

 var d=new DateFromYMD('2016-07-24'); 

您可以使用unix时间戳来指示:

SELECT UNIX_TIMESTAMP(date) AS epoch_time FROM table;

然后把epoch_time变成JavaScript,这是一个简单的问题:

var myDate = new Date(epoch_time * 1000);

乘以1000是因为JavaScript需要几毫秒,UNIX_TIMESTAMP给出秒。

在谷歌快速search提供了这个:

  function mysqlTimeStampToDate(timestamp) { //function parses mysql datetime string and returns javascript Date object //input has to be in this format: 2007-06-05 15:26:02 var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/; var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' '); return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]); } 

来源: http : //snippets.dzone.com/posts/show/4132

为什么不这样做:

 var d = new Date.parseDate( "2000-09-10 00:00:00", 'Ymd H:i:s' ); 

如果您知道如何使用ajax,那么对于这类问题我有一个非常棘手和简单的解决scheme。

解:

创build一个文件ajax_time.php文件,并在文件中写下面的代码(或者你需要在php中写入,如时区,格式等在PHP脚本内)。 示例php代码:echo date(“Ymd H:i:s”);

现在在JavaScript里面做一个Ajax:

 $.ajax({ url: "ajax_time.php", success: function(time){ var desired_formatted_time = time; } }); 

现在,当你运行这个脚本时,你将在variablesdesired_formatted_time中得到你想要的时间