我目前正在将 SQL 查询中的数据输出到表中,并尝试根据存储在数据表中的两个单独列中的日期对其进行过滤。当我在过滤器中输入日期时,它正在过滤它,但不准确。我以欧盟格式存储日期,表上的数据确实有时间,但过滤器没有。我不确定这是否是欧盟格式的问题或是否包含时间问题。
我正在使用以下代码取得轻微的成功。
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>
看着代码。我注意到没有表中的日期是欧盟格式的概念,所以我倾向于这是问题,但我不知道如何处理它。