[英]Convert MySql DateTime stamp into JavaScript's Date format
有谁知道我如何获取 MySQL datetime
时间数据类型值,例如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);
进一步添加到 Marco 的解决方案中。 我直接对 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();
有一个更简单的方法,sql时间戳字符串:
2018-07-19 00:00:00
Date() 接收的最接近时间戳的格式如下,因此将空格替换为“T”:
var dateString = media.intervention.replace(/\s/g, "T");
“2011-10-10T14:48:00”
然后,创建日期对象:
var date = new Date(dateString);
结果将是日期对象:
2018 年 7 月 19 日星期四 00:00:00 GMT-0300 (Horário Padrão de Brasília)
来自安迪的回答,对于 AngularJS - 过滤器
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]);
首先,您可以通过将 YMD 格式拆分为组件并使用这些日期组件,为 JavaScript 的 Date 对象(类)提供新方法“fromYMD()”,以将 MySQL 的 YMD 日期格式转换为 JavaScript 格式:
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 世界中的函数):
function DateFromYMD(ymd)
{
return (new Date()).fromYMD(ymd);
}
现在您可以简单地从 MySQL 日期格式创建日期;
var d=new DateFromYMD('2016-07-24');
在将字符串日期提供给 Date 对象之前,您可以使用 Js Date() 方法构造这样的布局:
parseDate(date){
const formated = new Date(date)
return `${formated.getFullYear()}/${formated.getMonth()}/${formated.getDay()}`;
},
如何在 Javascript 中操作 MySQL 时间戳
我今天不得不处理这个话题
所以我混合了两个我想分享的功能
function mysqlDatetoJs(mysqlTimeStamp){
var t = mysqlTimeStamp.split(/[- :]/);
return new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
}
接着
function prettyDate(date) {
var months = ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu',
'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'];
return date.getUTCDate() + ' ' + months[date.getUTCMonth()]
+ ' ' + date.getUTCFullYear();
}
我用它来构建这样的动态表
td.innerHTML = prettyDate(mysqlDatetoJs(array[i].data));
并在 TD 中打印日期
4 Set 2021
鉴于 array[i].data 是 MySQL 表中的日期记录,特别是对于这个回复,它的形式为
2021-09-04 11:25:20
希望它有用
尽管我在此页面https://www.digitalocean.com/community/tutorials/understanding-date-and-time-in-javascript中找到了干净的 date() 解释
您可以使用 unix 时间戳来指导:
SELECT UNIX_TIMESTAMP(date) AS epoch_time FROM table;
然后将 epoch_time 放入 JavaScript,这很简单:
var myDate = new Date(epoch_time * 1000);
乘以 1000 是因为 JavaScript 需要毫秒,而 UNIX_TIMESTAMP 给出秒。
谷歌的快速搜索提供了这个:
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", 'Y-m-d H:i:s' );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.