具有当前日期的元素的日期并分配唯一ID

时间:2013-08-29 23:40:39

标签: javascript jquery

我有一系列具有唯一日期的div,其中包括与div内容相关的一周开始和一周结束。如下所示:

<div class="dinnersWeeks">
  <div class="startingDate">8/25/2013 12:00 AM</div>
  <div class="endingDate">8/31/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="testweek.aspx">testweek.aspx</a></div>
</div>
<div class="dinnersWeeks">
  <div class="startingDate">9/1/2013 12:00 AM</div>
  <div class="endingDate">9/7/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="generalweek11.aspx">generalweek11.aspx</a></div>
</div>
<div class="dinnersWeeks">
  <div class="startingDate">9/8/2013 12:00 AM</div>
  <div class="endingDate">9/14/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="generalweek12.aspx">generalweek12.aspx</a></div>
</div>

我一直在努力确定当前日期是否介于每周div的开始日期和结束日期之间。

$('div.dinnersWeeks').each( function() {
    sd = new Date( $(this).find( 'div.startingDate' ).text() );
    ed = new Date( $(this).find( 'div.endingDate' ).text() );
    currentDate = new Date();
    console.log(check > sd && currentDate < ed);
});

之后,我会为当前周的div和下周的div分配一个ID。

非常感谢任何指导。

2 个答案:

答案 0 :(得分:1)

以下内容应该有效。我认为checked是原始代码中的拼写错误。我还添加了一个更改背景颜色的示例。这可以很容易地更改为根据您的偏好设置id

的JavaScript

$('div.dinnersWeeks').each( function() {
    sd = new Date( $(this).find( 'div.startingDate' ).text() );
    ed = new Date( $(this).find( 'div.endingDate' ).text() );
    currentDate = new Date();
    if(currentDate > sd && currentDate < ed) {
        $(this).css('background-color', 'red'); 
    }
});

JSFiddle http://jsfiddle.net/markwylde/4wuwZ/

请注意,如果您想在此项目中执行许多与日期相关的任务,我会查看moment.js框架,或者类似的框架。这里有一篇很好的stackoverflow帖子,解释了使用它可以做到以上的整洁方式:

答案 1 :(得分:0)

我假设您使用服务器端语言输出HTML?如果是这种情况,我只想用Unix时间向div添加一个属性,然后运行比较器。我确定有一个库可以在jQuery中进行日期比较,但如果你不想做任何复杂的事情,你可以使用Unix。

<div class="dinnersWeeks">
  <div class="startingDate" z-start-unix="3000392">8/25/2013 12:00 AM</div>
  <div class="endingDate" z-end-unix="3001394">8/31/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="testweek.aspx">testweek.aspx</a></div>
</div>

然后:

$('div.dinnersWeeks').each( function() {
currentDate = Math.round(new Date().getTime() / 1000);
console.log(check > $(this).find('div.startingDate').attr('z-start-unix') && currentDate < $(this).find('div.endingDate').attr('z-end-unix'));
});