我在脚本中绘制表格,显示一些数据。表中的一列是日期变量 如果该日期变量在当前月份,我希望其行显示在表格中。换句话说,如果日期不在当前月份,我想隐藏整行。
Date列最初是ISO日期格式,但我将其转换为DD.MM.YYYY。有了这个功能:
var Date1 = MyDate;
function formatYMDtoDMY(s)
{
var b = s.split(/\D/);
return b[2] + '.' + b[1] + '.' + b[0] + '.';
}
比我在我的表中调用此函数,表中的第3列:
$("#T1").append("<tr align='middle'>" +
"<td align='left'>"+ID+"</td>" +
"<td align='left'>"+UserName+"</td>" +
"<td align='left'>"+formatYMDtoDMY(Date1)+"</td>"+
"<td align='left'>"+City, State+"</td>" +
"<td align='left'>"+Project name+"</td>" +
"<td align='left'>"+Additional info+"</td>" +
"</tr>");
我试过这种方式:
if(input.getFullYear() == currentDate.getFullYear()
&& input.getMonth() == currentDate.getMonth()) {
// than I post my table
} // but all I get displayed is only 1st date
我还以为我可以抓住当月的第一天和最后一天:
var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);
但我不知道如果在这些变量之间检查日期列如何继续检查,如果是,则在表格中显示行。
答案 0 :(得分:0)
所以我完全误解了你的问题。
最简单的方法是将您的ISO日期转换为实际日期。 JavaScript Date对象理解ISO日期格式,因此您可以通过调用构造函数来创建日期对象:
var myDateObj = new Date(MyDate);
Date对象使用逻辑运算符,因此我们可以使用firstDay和lastDay对象:
var isCurrent = (firstDay <= myDateObj && myDateObj <= lastDay);
您可以在渲染表时使用它来显示和隐藏行。
$("#T1").append("<tr align='middle' class='" + isCurrent ? 'row-visible' : 'row-hidden' +"'>" +
"<td align='left'>"+ID+"</td>" +
"<td align='left'>"+UserName+"</td>" +
"<td align='left'>"+formatYMDtoDMY(Date1)+"</td>"+
"<td align='left'>"+City, State+"</td>" +
"<td align='left'>"+Project name+"</td>" +
"<td align='left'>"+Additional info+"</td>" +
"</tr>");
添加CSS规则:
.row-hidden {
display: none;
}
.row-visible {
display: table-row;
}
你可以把它包装成一个单独的函数:
function isCurrentMonth(s) {
var myDate = new Date(s);
var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);
return (firstDay <= myDate && myDate <= lastDay);
}