当前位置: 首页 > 编程语言 > C#

C#中计算重复日期的正确方法分享

时间:2023-04-10 16:30:43 C#

C#中计算重复日期的正确方法在我的项目中,我需要计算重复事件的日期。一开始,我只有一个开始日期/时间和该事件必须重复的信息:每天,每周,每2周,每3周,每月,每2个月......正确的方法是什么?它应该适用于不同的时区和日期保存时间设置。我想我应该将日/周/月添加到本地DateTime,然后将其转换为UTC。但我不确定这一点。如果我增加几天会发生什么,这将是我们需要将时钟向前调整一个小时的时间。在这种情况下,这个时间是不存在的。下面是我写的代码,但我不确定它是否适用于所有情况:switch(repeat){caseRepeat.Daily:for(inti=1;i<=occurrences;i++)result.Add(localStart.AddDays(i));休息;caseRepeat.Every2Weeks:for(inti=1;i<=occurrences;i++)result.Add(localStart.AddDays((7*2)*i));休息;...}返回结果;}publicListCreateRepeating(stringtimeZone,Repeatrepeat,intrepeatEnds,DateTimelocalStart,inteventDuration){varevents=newList();varoccurrences=FindOccurrences(localStart,repeat,repeatEnds);foreach(varoccurrenceinoccurrences){varitem=newEvent();item.Start=occurrence.ToUtcTime(timeZone);物品。结束=occurrence.ToUtcTime(timeZone).AddMinutes(eventDuration);事件。添加(项目);}返回事件;PS:所有日期都以UTC格式存储在数据库中。为未来事件(尤其是重复发生的事件)安排或计算日期是一个非常复杂的主题。不过,我已经从其他语言的角度写过几次(参见:1、2、3、4)。恐怕这个主题太宽泛,无法为您提供确切的代码。详细信息将特定于您的应用程序。但这里有一些提示。一般来说:部分答案。我宁愿将实现更改为publicenumTimePeriod{None=0,Day=1,//Justweek,no"twoweeks,threeweeksetc."Week=2,Month=3}publicstaticclassOccurrencies{//可能您想将其转换为方法扩展:“thisDateTimefrom”publicstaticIEnumerableFindInterval(DateTimefrom,TimePeriodperiod,intcount){while(true){switch(period){caseTimePeriod.Day:from=from.AddDays(count);休息;caseTimePeriod.Week:from=from.AddDays(7*count);休息;caseTimePeriod.Month:from=from.AddMonths(count);休息;}产量回报;}}}使用:上面是C#学习教程:C#计算重复日期的正确方法。分享的所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——//Get52-weekintervalsListintervals2Weeks=Occurrencies.FindInterval(DateTime.Now,TimePeriod.Week,2).Take(5).ToList();//获取11个3个月的间隔列表intervals3Months=Occurrencies.FindInterval(DateTime.Now,TimePeriod.Month,3).Take(11).ToList();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: