从数据表中的日期字段中删除时间戳

Strip timestamp from the date field in Datatables

本文关键字:删除 时间戳 字段 数据表 日期      更新时间:2023-09-26

我使用的是jquery Datatables插件。我关注了链接http://www.codeproject.com/Articles/190718/jQuery-DataTables-and-J2EE-web-application-integra

我将JSON对象中的Date传递给datatables插件。Web服务调用的格式类似

"美国东部时间2009年1月10日星期六00:08:00"

,我需要去掉时间、EST和日期,我的意思是它应该看起来像

"2009年1月10日"

并且在服务器侧对该列进行排序。我所需要的只是在客户端动态剥离数据。我还在学习数据表插件的过程中,我不确定是否能实现这一点。请专家们为我指明正确的方向。

[Edit]由于日期看起来像是从服务器返回的字符串,因此最简单的解决方案可能是正则表达式。试试这个:

function reformatDate(dateStr) {
  var r = /^'w{3}'s+('w{3})'s+('d{1,2})'s+.*?('d{4})$/
    , m = (''+dateStr).match(r);
  return (m) ? m[1]+' '+m[2]+', '+m[3] : dateStr;
}

[Ooriginal]假设您使用的是一个实际的Date对象,并且您不想产生适当的JavaScript日期争论库(例如优秀的Datejs)的开销,那么您可以将日期格式化为:

var formatDate = (function() {
  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  return function(dt) {
    return months[dt.getMonth()] + ' ' + dt.getDate() + ', ' + dt.getFullYear();
  };
})();
formatDate(new Date()); // => "Mar 15, 2012"

我不确定是否可以在bServerSide设置为true的情况下执行此操作,但您可能可以使用数据表的aoColumns选项设置列定义,然后通过应用列渲染

fnRender: function (o, val) {
    parse your date here...
    return newDateString;
}