gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:51:01 25 4
gpt4 key购买 nike

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

例如。我定下了一周后的日期,即 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com