如何显示/隐藏跨度取决于本地时间是否等于“startdate”和“enddate”之间的Jquery

时间:2016-02-02 20:47:20

标签: javascript jquery

我有一个由多行组成的表。我在最后有一个删除链接,点击将删除该行。但是,如果我的本地时间在startdate和enddate之间,我必须显示维护窗口消息: 例如:当地时间:2月2日星期二,下午12:27     startdate:2月2日星期二,上午11:11,结束日期:星期三:2月3日,上午11点11分 上述当地时间介于开始和结束日期之间。因此,当我删除该行时,我首先检查已删除的行是否有“startdate”和本地时间之间的“enddate”,如果是,则显示该消息。

这是表格的html:

<table id="show-list">
      <thead>
    <tr>
      <th>Id</th>
      <th>Subject</th>
      <th>Start Date</th>
      <th>End Date</th>
    </tr>
  </thead>
  <tbody>
      <tr>
        <td>12</td>
        <td>abc</td>
        <td>
            <time datetime="Tue Feb2 2016, 11:27AM">Tue Feb2, 12:27PM</time>
        </td>
        <td>
          <time datetime="Wed Feb3 2016, 11:27AM">Wed Feb3, 11:27AM</time>
        </td>
        <td><a href="#">Delete Row</a></td>
      <tr>
      <tr>
        <td>123</td>
        <td>hru</td>
        <td>
            <time datetime="Tue Feb23 2016, 11:27AM">Tue Feb23, 12:27PM</time>
        </td>
        <td>
          <time datetime="Wed Feb24 2016, 11:27AM">Wed Feb24, 11:27AM</time>
        </td>
        <td><a href="#" class="deleterow">Delete Row</a></td>
      <tr>
  </tbody>
 </table>
 <div id="div" style="display:none;"></div>

JS:

$('.deleterow').on('click', function(e) {
  var $this = $(this);
  $.ajax({
      url: "/url/delete",
  }).done(function(result) {
   var now = Date.now();
        $this.parent().find("time").each(function(arg,log){
          //not sure how to check for the start and end dates here to see if its between the current time.
        });
 });

非常感谢!!感谢

2 个答案:

答案 0 :(得分:3)

这是一个简单的示例,但您需要定义日期格式:

        var now = Date.now(),
        start = $this.parent().parent().find('time')[0].getAttribute('datetime'),
        end = $this.parent().parent().find('time')[1].getAttribute('datetime');
        start = new Date(start.replace('AM', ' AM'));
        end = new Date(end.replace('AM', ' AM'));
        if ((start.getTime()  <= now.getTime()  && now.getTime()  <= end.getTime() )){
            alert("date contained");
        }

答案 1 :(得分:1)

首先,您需要的日期格式可由JavaScript Date.parse()函数解释。例如:

var earliest = Date.parse('2016-03-04T11:24')

自1970年1月1日起,这将返回数毫秒。在这种情况下,数字是1457090640000. Date.now()也产生了这种数字。

现在你可以比较这两个数字:

if (earliest < now) {
    // do something... 
}

为“最新”日期做同样的事情并且你已经设置好了。

请记住:如果您在浏览器中运行代码,Date.now()会生成用户浏览器今天认为的任何日期。如果您需要当地时间,则可能需要使用某些服务器端代码。例如,您可以在服务器上呈现HTML时为每个受影响的行定义JavaScript变量或数据属性。