0

我正在寻求帮助来完成这个看似简单的任务。我只是不知道如何解决这个问题。

基本上,我有一个表单,我从 jQuery 的 datepicker 中为工作订单选择一个日期(截止日期)。结果与其他工作订单一起显示在表格中的单独页面上。

我试图弄清楚如何确定表中显示的日期是否过期,如果日期早于今天的日期,则更改 CSS。因为表格中有几行,每一行都有一个需要评估的截止日期,这让我很难过。

<table>
<tr>
<td class="dueDate">November 1, 2012</td>
</tr>
<tr>
<td class="dueDate">November 4, 2012</td>
</tr>
<tr>
<td class="dueDate">November 26, 2012</td>
</tr>
</table>

这是显示表单时表格的布局。这是我能想到的最接近的确定显示的日期是否早于今天的日期。

$('.dueDate').each(function(){
var dueDate = $(this).val();
var today = new Date();
if (Date.parse(dueDate) < Date.parse(today)){
$(".dueDate").addClass("pastDue");
}        
});

这似乎不起作用。有任何想法吗?

4

4 回答 4

1

你也需要使用选择器,.dueDate不是#dueDate 因为dueDate是一个类,而不是一个ID

于 2012-11-04T06:33:56.767 回答
0

尝试Date.parse

  if (Date.parse(dueDate) < Date.parse(today)) {
      $(".dueDate").addClass("pastDue");// . for class
  }
于 2012-11-04T06:30:33.910 回答
0

最好的方法是将日期转换为 Unix 时间戳,所以它只是一个数字。然后你将只是比较数字,通过这样做你会知道日期是否已经过去。您可以使用我从这里获得的这个功能:如何在 Javascript 中将常规日期转换为 unixtime?

function covertToUnixTime(yourDate) {
    return new Date(yourDate.substring(4, 8) + '/' + 
                    yourDate.substring(2, 4) + '/' + 
                    yourDate.substring(0, 2)).getTime() / 1000;
}

covertToUnixTime('12092008');   // Returns: 1221170400
//12-09-2008 is the date

您还可以使用jQuery.now()时间戳来获取实际日期,然后在两者之间进行比较,有关它的更多信息,请查看此处:http ://api.jquery.com/jQuery.now/ 我猜就是这样。

于 2012-11-04T06:32:37.327 回答
0

我发现这篇文章很有帮助,但下面的代码行不起作用:

    var dueDate = $(this).val();

相反,我使用了下面的代码并且它有效

    var dueDate = $(this).text();
于 2014-02-05T22:40:48.700 回答