如何循环并比较日期jQuery

时间:2017-05-15 18:14:35

标签: jquery jquery-ui

我想循环遍历表格的元素,如果说5天之后就更改某些CSS元素。日期列将是Thu May 04 13:44:23 EDT 2017

格式的字符串

我已经聚集了它应该是这些方面的东西(为了简单起见,如果日期是在今天之前我们说)但是我已经玩了一会儿而且无法得到任何东西去。 jQueryUI库可用。

$(".t-data-grid").find('td').each (function() {
  if(Date.parse($(this).text()) < $.datepicker.formatDate('DD, d MM, yy', new Date())) {
    $(this).css('color', 'red');
  }
});     

2 个答案:

答案 0 :(得分:2)

这是一个非常简单的solutoin你的问题。代码已注释,应自行解释。

$(".t-data-grid").find('td').each(function() {
  // Parse the date
  var date = Date.parse($(this).text());
  // Create a date to compare against
  var fiveDaysAgo = new Date();
  // Subtract 5 days from it
  fiveDaysAgo.setDate(fiveDaysAgo.getDate()-5);
  // Compare to see if the date in the table is older than 5 days
  if(date < fiveDaysAgo) $(this).css('color', 'red');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="t-data-grid">
  <tr>
    <td>Mon May 15 13:44:23 EDT 2017</td>
    <td>Sat May 13 13:44:23 EDT 2017</td>
    <td>Wed May 10 13:44:23 EDT 2017</td>
    <td>Mon May 08 13:44:23 EDT 2017</td>
    <td>Sun May 07 13:44:23 EDT 2017</td>
  </tr>
</table>

答案 1 :(得分:1)

这一行

if(Date.parse($(this).text()) < $.datepicker.formatDate('DD, d MM, yy', new Date()))

Date对象(这是Date.parse()生成的)与字符串(这是$.datepicker.formatDate()生成的)进行比较。这不起作用。

将日期对象与日期对象进行比较。

$(".t-data-grid td").each(function () {
    var cellDate = Date.parse($(this).text());
    if (cellDate < new Date()) {
        $(this).css('color', 'red');
    }
});

还要确保<td>包含实际可以解释为日期的文本。并非每个可能的日期表示都由Date.parse()识别。

在这个问题中,如何从JS日期中减去天数:Subtract days from a date in JavaScript(以及其他许多内容)。