JavaScript函数从日历中获取下一个日期

时间:2015-04-28 17:59:33

标签: javascript calendar

我的数据库中有多个已注册的日历,每个日历都有其特征。

我有一个包含文件的屏幕,并通过下拉列表选择此文件的频率将遵守的时间表。

例如:每日,每周,每月等。

这个想法是当用户点击特定文本框时,会出现一条消息,指示文件的下一个可用日期。

实施例。今天是28日。

气球:"下一个日期是2015年4月29日那天"如果频率是每天。

你能帮我用JavaScript构建这个函数吗?

我尝试使用下面的代码,但我的主要问题是如何在日历函数中返回下一个日期

代码:

function ShowTip(obj, msg, useBottom, maxWidth){
    try
    {
    window.status = msg;
    var msgTip = document.getElementById('msgTip');             

    if(msgTip)
    {
        msgTipText.innerHTML = msg;
        msgTip.style.zIndex = 9999;
        msgTip.style.left = obj.getClientRects()[0].left + document.body.scrollLeft - 2;
        msgTip.style.display = 'block';
        if (maxWidth != null)
            if (msgTip.offsetWidth > maxWidth) msgTip.style.width = maxWidth;
        if (useBottom)
            msgTip.style.top = obj.getClientRects()[0].bottom + document.body.scrollTop;
        else
            msgTip.style.top = obj.getClientRects()[0].top + document.body.scrollTop - msgTip.offsetHeight - 4;
    }
}
catch(e) {} 
}

2 个答案:

答案 0 :(得分:1)

您可以使用这样的函数传递日,周,月等间隔,并使用switch语句相应地更改日期。最后,该函数可以返回格式化的日期字符串以显示给用户。

function addDate(interval) {
    var todaysDate = new Date();
    switch(interval) {
        case "daily":
            todaysDate.setDate(todaysDate.getDate() + 1);
            break;
        case "weekly":
            todaysDate.setDate(todaysDate.getDate() + 7);
            break;
        case "monthly":
            todaysDate.setMonth(todaysDate.getMonth() + 1);
            break;
        default:
            break;
    }

    return todaysDate.toLocaleDateString();
}

答案 1 :(得分:0)

使用提供加/减功能的moment.js,然后使用 toDate()

将moment.js返回的时间戳转换为JavaScript Date对象
<script src="//momentjs.com/downloads/moment.js"></script>

<script type="text/javascript">
  var now = moment();
  var tomorrow = now.add(1, 'day').toDate();
  var nextWeek = now.add(1, 'week').toDate(); 
  var nextMonth = now.add(1, 'month').toDate(); 
</script>

Moment.js还提供格式化功能,例如

<script type="text/javascript">
  var now = moment();
  var tomorrow = now.add(1, 'day');
  console.log(tomorrow.format('MM/DD/YYYY'));
</script>