現在、SQL クエリからテーブルにデータを出力し、データテーブルに格納されている 2 つの別々の列の日付に基づいてフィルター処理しようとしています。フィルターに日付を入力すると、フィルター処理されますが、正確ではありません。日付を EU 形式で保存していますが、テーブルのデータには時刻がありますが、フィルターにはありません。これが EU 形式の問題なのか、テーブルに時間を含めることの問題なのかはわかりません。
次のコードを使用してマイナーな成功を収めています。
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>
コードを見ています。表の日付がEU形式であるという概念がないことに注意しているので、それが問題に傾いていますが、それを処理する方法がわかりません.