在foreach循环中计算日期

问题描述:

我有一个由wordpress中的foreach循环和每个列表项目生成的事件列表,我有一个日期,一个值和一个新的日期,这是一个计算这两个。在foreach循环中计算日期

使用Jquery如果没有这个计算的多个实例,我可以计算出这个计算,但是我正在寻找适合我为它工作的每个li。下面是我目前使用的HTML;

<ul class="event-list"> 


<li class="event"> 
<div class="date">13 jun 2017</div> 
<div class="value">2</div> 
<div class="new-date"> in here </div> 
</li> 


<li class="event"> 
<div class="date">15 jun 2017</div> 
<div class="value">3</div> 
<div class="new-date"> in here </div> 
</li> 

</ul> 

我寻找实现使用jQuery和铭记这些DIV是动态生成的所有值应为以下:

<li class="event"> 
<div class="date">13 jun 2017</div> 
<div class="value">2</div> 
<div class="new-date"> 15 jun 2017 </div> 
</li> 


<li class="event"> 
<div class="date">15 jun 2017</div> 
<div class="value">3</div> 
<div class="new-date"> 18 jun 2017 </div> 
</li> 

</ul> 

这里是展现一个小提琴正在进行的工作https://jsfiddle.net/uo2gugda/

您可以看到计算正在为第一个事件工作,但不是第二个,另一个问题是我cing是新日期的输出 - 如何将此格式设置为2017年6月15日,而不是2017年6月15日00:00:00 GMT + 0100(BST)。

谢谢。

你需要为每个每个DOM元素,格式,可以使用moment.js,在第二天,这个循环的计算如下:

function addDays(date, days) { 
 
    var result = new Date(date); 
 
    result.setDate(result.getDate() + days); 
 
    return result; 
 
} 
 

 
$('li.event').each(function() { 
 
    var $this = $(this); 
 
    var date = $this.children('.date').html(); 
 
    var days = Number($this.children('.value').html()); 
 
    var stringDate = moment(addDays(date, days)).format('DD MMM YYYY'); 
 
    $this.children('.new-date').html(stringDate); 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="event-list"> 
 
    <li class="event"> 
 
    <div class="date">13 jun 2017</div> 
 
    <div class="value">2</div> 
 
    <div class="new-date"> in here </div> 
 
    </li> 
 
    <br> 
 
    <li class="event"> 
 
    <div class="date">15 jun 2017</div> 
 
    <div class="value">3</div> 
 
    <div class="new-date"> in here </div> 
 
    </li> 
 
</ul>

+0

非常感谢,非常完美 –