gpt4 book ai didi

jquery - 有没有办法为 IE 填充 "dd-MON-yyyy"日期格式

转载 作者:行者123 更新时间:2023-12-03 22:41:18 26 4
gpt4 key购买 nike

我支持的组织规定所有日期都将以 dd-MON-yyyy 格式显示(2006 年 9 月 10 日、2013 年 5 月 8 日)。请参阅http://jsfiddle.net/jhfrench/zpWWa/示例数据集。

在 Chrome 上运行时,dataTables正确地将这种模式识别为日期。

在 IE7 上运行时,dataTables(或 IE?)无法将此模式识别为日期。 Unfortunately, we have to support IE7有没有办法为 IE 填充“dd-MON-yyyy”格式,但不能为 Chrome 或其他本身支持该格式的浏览器

我正在使用 IE 条件来指定 HTML 标记,因此我可以关闭 <HTML class="lt-ie9"> ;我还在该页面上使用 Modernizr(如果有相关测试)。

最佳答案

我认为最简单的解决方案是编写自己的排序函数,然后为使用日期格式的所有列调用它,而不是尝试填充 IE7。使用 DataTables 可以很容易地做到这一点,概述如下:

http://www.datatables.net/plug-ins/sorting

您可以手动定义表以对列使用新的排序算法,但这有点笨拙,因为无论您在何处使用该格式,都需要执行此操作。相反,您可以自动检测,如下所述:

http://www.datatables.net/plug-ins/type-detection

我在这里用一个快速解决方案创建了你的 fiddle 分支 - 我只是将日期转换为一个简单的数字 - 只要你信任数据,这应该没问题。否则,您可能希望转换为实际日期对象,这可能是一种更可靠的方法。

http://jsfiddle.net/pFdyK/

代码:

// Put these somewhere better than a global :)
var months = "JAN_FEB_MAR_APR_MAY_JUN_JUL_AUG_SEP_OCT_NOV_DEC".split("_");
function monthToOrd(month) {
return $.inArray(month, months);
}
function customDateToOrd(date) {
// Convert to a number YYYYMMDD which we can use to order
var dateParts = date.split(/-/);
var day = dateParts[0];
var month = monthToOrd(dateParts[1]);
var year = dateParts[2];
var numericDate = (year * 10000) + (month * 100) + day;
return numericDate;
}

// This will help DataTables magic detect your custom format
// Unshift so that it's the first data type (overridding in built ones)
jQuery.fn.dataTableExt.aTypes.unshift(
function ( sData )
{
// You might want to make this check a little tighter so you don't match
// invalid dates, but this should do for now
if (sData.match(/\d{2}-[A-Za-z]{3}-\d{4}/))
return 'custom-date';
else
return null;
}
);

// define the sorts
jQuery.fn.dataTableExt.oSort['custom-date-asc'] = function(a,b) {
var ordA = customDateToOrd(a);
var ordB = customDateToOrd(b);
return (ordA < ordB) ? -1 : ((ordA > ordB) ? 1 : 0);
};

jQuery.fn.dataTableExt.oSort['custom-date-desc'] = function(a,b) {
var ordA = customDateToOrd(a);
var ordB = customDateToOrd(b);
return (ordA < ordB) ? 1 : ((ordA > ordB) ? -1 : 0);
};

$(document).ready(function() {
$('html').addClass('lt-ie9');
$('table.datatable').dataTable();
} );

关于jquery - 有没有办法为 IE 填充 "dd-MON-yyyy"日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16449934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com