dzm*_*dzm 157 javascript mysql jquery datetime
有谁知道我如何获取MySQL datetime数据类型值,例如YYYY-MM-DD HH:MM:SS解析它或将其转换为在JavaScript的Date()函数中工作,例如: - Date('YYYY,MM,DD,HH,MM,SS);
谢谢!
And*_*y E 407
这里给出的一些答案要么过于复杂,要么不起作用(至少在所有浏览器中都不行).如果退后一步,可以看到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)
Run Code Online (Sandbox Code Playgroud)
公平警告:这假设您的MySQL服务器正在输出UTC日期(这是默认值,如果字符串没有时区组件,则建议使用).
Mar*_*aio 62
为了增加优秀的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;
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式给出表格中的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());
Run Code Online (Sandbox Code Playgroud)
Sym*_*ans 29
我想我可能找到了一种更简单的方法,没有人提到过.
MySQL DATETIME列可以通过以下方式转换为unix时间戳:
SELECT unix_timestamp(my_datetime_column) as stamp ...
Run Code Online (Sandbox Code Playgroud)
我们可以使用自纪元以来需要毫秒的构造函数来创建一个新的JavaScript Date对象.unix_timestamp函数返回自纪元以来的秒数,因此我们需要乘以1000:
SELECT unix_timestamp(my_datetime_column) * 1000 as stamp ...
Run Code Online (Sandbox Code Playgroud)
结果值可以直接用于实例化正确的Javascript Date对象:
var myDate = new Date(<?=$row['stamp']?>);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
ale*_*emb 16
现代浏览器的一个衬垫(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)
Run Code Online (Sandbox Code Playgroud)
只是为了好玩,这里有一个可以在旧版浏览器中使用的单行程序(现已修复):
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)
Run Code Online (Sandbox Code Playgroud)
最新版本的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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126348 次 |
| 最近记录: |