如何设置一个日期到期72小时

时间:2016-03-08 08:37:23

标签: javascript jquery date

功能

用户玩游戏,当用户获胜时,他们将被导航到兑换页面。用户将在72小时内从好吃的页面兑换好吃的东西。因此,兑换将从用户处于"祝贺"的系统时间起72小时后到期。兑换页面。

已完成的工作:

首先,我尝试在用户导航到祝贺页面时获取当前的systemTime。

其次,我试图通过再添加3天将其设置为72小时后获得到期日。

最后,我尝试将计算的到期日期附加到<div>到期日。

问题:

不知何故,失效日期未正确显示。例如,如果今天的日期是8/3,则结果显示为14/2。

因此,日期不会在72小时后显示,而是在一个月和几天前显示。

我做错了什么?

&#13;
&#13;
 function win() {

   //get current System Time and Date
   var endDate = new Date();

   //Get Expiry Date
   var date = new Date(endDate);
   date.setDate(date.getDate() + 3);
   var expiryDate = (date.getDate() + 3) + "/" + (date.getMonth());
   document.getElementById('ExpiryDate').innerHTML = expiryDate;

   console.log("test");
   $("#my-memory-game").fadeOut(function() {
     win_video();
   })
 }
&#13;
<div id="congratulations">
  <canvas id="MyCanvas" style="width:1080px; height: 1920px;">
    Your browser does not support the HTML5 canvas tag.
  </canvas>
  <div id="ExpiryDate"></div>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

首先,让月份正确

在javascript月份索引中,从0到11而不是从1到12.因此,在显示月份数值时,应始终执行date.getMonth() + 1。这就是为什么在你的情况下得到2(二月)而不是3(三月)。

请参阅Javascript getDate() reference

然后,那天

你加3天两次(8 + 3x2 = 14年)。

date.setDate(date.getDate() + 3);
var expiryDate = (date.getDate() + 3) + "/" + (date.getMonth());

删除第二个+ 3,你应该好好去。

答案 1 :(得分:1)

您只需要在日期中添加3:

&#13;
&#13;
.card {
    min-height: 200px;
}
&#13;
&#13;
&#13;

您可以安全地添加超过月底的天数,3月31日加3天将导致4月3日。

但是,无论如何,在客户端上执行此操作似乎并不安全,因为您不知道主机系统时钟的准确程度。我向服务器发送消息并跟踪其中的内容。