功能
用户玩游戏,当用户获胜时,他们将被导航到兑换页面。用户将在72小时内从好吃的页面兑换好吃的东西。因此,兑换将从用户处于"祝贺"的系统时间起72小时后到期。兑换页面。
已完成的工作:
首先,我尝试在用户导航到祝贺页面时获取当前的systemTime。
其次,我试图通过再添加3天将其设置为72小时后获得到期日。
最后,我尝试将计算的到期日期附加到<div>
到期日。
问题:
不知何故,失效日期未正确显示。例如,如果今天的日期是8/3,则结果显示为14/2。
因此,日期不会在72小时后显示,而是在一个月和几天前显示。
我做错了什么?
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;
答案 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:
.card {
min-height: 200px;
}
&#13;
您可以安全地添加超过月底的天数,3月31日加3天将导致4月3日。
但是,无论如何,在客户端上执行此操作似乎并不安全,因为您不知道主机系统时钟的准确程度。我向服务器发送消息并跟踪其中的内容。