有谁知道我如何获取 MySQLdatetime
数据类型值,例如YYYY-MM-DD HH:MM:SS
解析它或将其转换为在 JavaScript 的Date()
函数中工作,例如:- Date('YYYY, MM, DD, HH, MM, SS);
谢谢!
有谁知道我如何获取 MySQLdatetime
数据类型值,例如YYYY-MM-DD HH:MM:SS
解析它或将其转换为在 JavaScript 的Date()
函数中工作,例如:- Date('YYYY, MM, DD, HH, MM, SS);
谢谢!
这里给出的一些答案要么过于复杂,要么就是行不通(至少,不是在所有浏览器中)。如果你退后一步,你会看到 MySQL 时间戳的每个时间分量都与Date()
构造函数所需的参数顺序相同。
所需要的只是对字符串进行非常简单的拆分:
// 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 服务器正在输出 UTC 日期(这是默认值,如果字符串没有时区组件,则建议使用)。
要添加到出色的Andy E 答案中,常用的函数可能是:
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;
}
通过这种方式给定 MySQL 日期/时间,"YYYY-MM-DD HH:MM:SS"
甚至是简短的形式(仅日期),"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());
我想我可能找到了一种更简单的方法,没有人提到过。
MySQL DATETIME 列可以通过以下方式转换为 unix 时间戳:
SELECT unix_timestamp(my_datetime_column) as stamp ...
我们可以通过使用自纪元以来需要毫秒的构造函数来创建一个新的 JavaScript Date 对象。unix_timestamp 函数返回自纪元以来的秒数,因此我们需要乘以 1000:
SELECT unix_timestamp(my_datetime_column) * 1000 as stamp ...
结果值可以直接用于实例化一个正确的 Javascript Date 对象:
var myDate = new Date(<?=$row['stamp']?>);
希望这可以帮助。
现代浏览器(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 格式的日期,因此您只需将空格更改为“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);