javascript - 如何有效地计算给定原始日期的连续日期

标签 javascript date

这是一个基本上允许您为给定事件设置第一个日期,然后设置重复周期的系统。

例如。我定下了一周后的日期,即 2012 年 7 月 19 日,所以我知道我必须把猫和牛奶一起赶出去。我还将其设置为每周通知,因此在未来几周内我希望收到相同的通知。

原始日期位于我的数据库中,这对第 1 周没问题,但在第 2 周我需要返回原始日期加上 1 周。

从表面上看,这似乎很简单,但我需要确保我可以考虑闰年和不同的重现频率(每两周一次、每月一次、每年一次,等等)。

我想将它保留为 javascript 实现 - 因为它更快,而且我觉得可能需要比更新数据库中的日期更少的代码。也许这是无法实现的,任何指示都会很好。

我认为这些可能是一个起点:

Given a start date , how to calculate number of years till current date in javascript

Given a date, how can I efficiently calculate the next date in a given sequence (weekly, monthly, annually)?

更新,我写了下面的内容来返回在每个不同情况下添加的时间量,从那里我可以使用下面的答案:

var strDate = $(this).find('.next').text();
            var frequency = $(this).find('.occurs').text();
            var frmDate = getDateObject(strDate);
            var toDate = new Date();

            var days = parseInt(Math.floor((frmDate - toDate) / 86400000));

            if(days < 0) {
                // find out how many WHOLE 'frequencies' have passed
                var weeks = Math.ceil(0 - (days / 7));
                var months = Math.ceil(0 - (monthDiff(toDate,frmDate)));
                var years = Math.ceil(months / 12);
                //alert(days + '/' + weeks + '/' + fortnights + '/' + months + '/' + quarters + '/' + years);

                if(frequency == 'Weekly') { frmDate.add(weeks).weeks(); }
                if(frequency == 'Fortnightly') { frmDate.add(weeks*2).weeks(); }
                if(frequency == 'Monthly') { frmDate.add(months).months(); }
                if(frequency == 'Quarterly') { frmDate.add(months*3).months(); }
                if(frequency == 'Annually') { frmDate.add(years).years(); }

                var newdate = frmDate.toString("dd/MM/yyyy");
                //alert(newdate);

                $(this).find('.next').text(newdate);
            }

最佳答案

此外,此 SQL 实现将使用 DATEADD:

http://sql-plsql.blogspot.com/2010/07/dateadd.html

您不必担心闰年等特殊日期,因为大多数日期函数都会处理这些。

或者,您可以按照其他用户的建议使用 getDate()、getMonth()。 var today = new Date(); today.setDate(today.getDate() + numberOfDaysToAdd);

关于javascript - 如何有效地计算给定原始日期的连续日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452075/

相关文章:

java : How can I cast Date from "Thu May 01 00:00:00 WEST 2014 " to "2014-01-05 00:00:00.0"

android.database.sqlite.SQLiteDatabase.rawQuery() 没有使用 SQLite datetime() 函数更新 DATETIME 列

javascript - 如何使用 HTML Canvas getImageData() 计算图像上的颜色?

javascript - 使用<audio>标签和Javascript/jQuery创建简单的音频播放器

javascript - .Net webApi ISO 日期时间和 IE8

javascript - 输入日期字段中显示的星期几不正确

string - 在 Lua 中匹配即将到来的日期

javascript - 为什么文档直到退出循环才被修改?

javascript - 我正在使用 Geckofx-22,没有页眉和页脚就无法打印

C# MySQL LINQ 日期时间转换