我正在將數據從SQL查詢輸出到表中,並試圖根據存儲在數據表中的兩個單獨列中的日期進行過濾。當我在過濾器中輸入日期時,它將過濾它,但不準確。我以EU格式存儲日期,表格中的數據確實有時間,但過濾器沒有。我不確定這是歐盟格式的問題還是時間上的問題。Javascript日期過濾準確性問題
我正在使用下面的代碼來取得小成功。
var minBeginDateFilter;
var maxBeginDateFilter;
var minEndDateFilter;
var maxEndDateFilter;
$.fn.dataTableExt.afnFiltering.push(
function(oSettings, aData, iDataIndex) {
var startTime = new Date(aData[3]).getTime();
var endTime = new Date(aData[4]).getTime();
if (minBeginDateFilter && !isNaN(minBeginDateFilter)) {
if (startTime < minBeginDateFilter) {
return false;
}
}
if (maxBeginDateFilter && !isNaN(maxBeginDateFilter)) {
if (startTime > maxBeginDateFilter) {
return false;
}
}
if (minEndDateFilter && !isNaN(minEndDateFilter)) {
if (endTime < minEndDateFilter) {
return false;
}
}
if (maxEndDateFilter && !isNaN(maxEndDateFilter)) {
if (endTime > maxEndDateFilter) {
return false;
}
}
return true;
}
);
$(document).ready(function(){
//initTable("#itemTable");
$("tr:odd").css("background-color", "#DBD4CE");
$("tr:even").css("background-color", "#F9F1EA");
$("#dialog").dialog({ autoOpen: false });
$("#dialog_link").click(function() {
$("#dialog").dialog("open");
});
var oTable = $('#itemTable').dataTable({
"bJQueryUI": true
});
$.datepicker.dateFormat = 'dd/mm/yy';
$("#beginFrom").datepicker({
"onSelect": function(date) {
minBeginDateFilter = new Date(date).getTime();
oTable.fnDraw();
},
dateFormat: 'dd/mm/yy'
}).keyup(function() {
minBeginDateFilter = new Date(this.value).getTime();
oTable.fnDraw();
});
$("#beginTo").datepicker({
"onSelect": function(date) {
maxBeginDateFilter = new Date(date).getTime();
oTable.fnDraw();
},
dateFormat: 'dd/mm/yy'
}).keyup(function() {
maxBeginDateFilter = new Date(this.value).getTime();
oTable.fnDraw();
});
$("#endFrom").datepicker({
"onSelect": function(date) {
minEndDateFilter = new Date(date).getTime();
oTable.fnDraw();
},
dateFormat: 'dd/mm/yy'
}).keyup(function() {
minEndDateFilter = new Date(this.value).getTime();
oTable.fnDraw();
});
$("#endTo").datepicker({
"onSelect": function(date) {
maxEndDateFilter = new Date(date).getTime();
oTable.fnDraw();
},
dateFormat: 'dd/mm/yy'
}).keyup(function() {
maxEndDateFilter = new Date(this.value).getTime();
oTable.fnDraw();
});
});
表代碼:
<table id="itemTable" border="0" cellpadding="0" cellspacing="0" width="100%">
<thead>
<tr>
<th>Start Date & Time ${timeZone}</th>
<th>End Date & Time ${timeZone}</th>
</tr>
</thead>
<tbody>
<c:forEach items="${marketAlerts}" var="marketAlert">
<tr id="item_${marketAlert.messageId}">
<td><fmt:formatDate pattern="${datePattern}" value="${marketAlert.eventStart}" /></td>
<td><fmt:formatDate pattern="${datePattern}" value="${marketAlert.eventStop}" /></td>
</tr>
</c:forEach>
</tbody>
</table>
看代碼。我注意到,表中沒有歐盟格式的日期,所以我傾向於這個問題,但我不知道如何處理它。
aData的值是什麼?它來自哪裏? – Matt
aData是可數據表itemTable。我在此頁面提供的示例中實現了此功能http://live.datatables.net/etewoq/4/edit#javascript,live – Patrick