谁知道如何获取MySQL日期数据类型值,例如YYYY-MM-DD HH:MM:SS
,并将其解析或转换为在JavaScript的Date()
函数中工作,例如:- Date('YYYY,MM,DD,HH,MM,SS);
谢谢!
发布于 2010-06-19 22:53:16
这里给出的一些答案要么过于复杂,要么就是不起作用(至少,不是在所有浏览器中)。如果退后一步,您可以看到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日期(这是默认设置,如果字符串中没有时区部分,则建议使用此设置)。
发布于 2011-02-21 00:28:01
为了给优秀的Andy E answer添加一个常用的功能,可以是:
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"
甚至简短的表单(only date) "YYYY-MM-DD"
中给定一个MySQL日期/时间,您可以这样做:
var d1 = Date.createFromMysql("2011-02-20");
var d2 = Date.createFromMysql("2011-02-20 17:16:00");
alert("d1 year = " + d1.getFullYear());
发布于 2013-11-21 00:29:48
我想我可能找到了一种更简单的方法,但没有人提到。
可以通过以下方式将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']?>);
希望这能有所帮助。
https://stackoverflow.com/questions/3075577
复制相似问题