我需要输入2个代表日期范围的日期。对于这些给定的日期,我需要返回这些日期之间的季节列表。是否有可能不需要在该范围内的所有日期之间进行迭代的解决方案?
例如日期:25/12/2014-17/7/
2015结果将是:Winter,Spring,Summer
季节将以恒定值“
季节”指定:
例如,常量将如下存储。我发现的主要问题是冬季,因为一年将增加一年,而月份将从1开始。
DateTimeOffset winterStart= new DateTimeOffset(year, 12, 21,0,0,0,new TimeSpan(0));
DateTimeOffset winterEnd = new DateTimeOffset(year, 03, 19, 0, 0, 0, new TimeSpan(0));
DateTimeOffset springStart = new DateTimeOffset(year, 03, 20,0,0,0,new TimeSpan(0));
DateTimeOffset springEnd = new DateTimeOffset(year, 06, 19, 0, 0, 0, new TimeSpan(0));
DateTimeOffset summerStart = new DateTimeOffset(year, 06, 20, 0, 0, 0, new TimeSpan(0));
DateTimeOffset summerEnd = new DateTimeOffset(year, 09, 21, 0, 0, 0, new TimeSpan(0));
DateTimeOffset autumStart = new DateTimeOffset(year, 09, 22, 0, 0, 0, new TimeSpan(0));
DateTimeOffset autumEnd = new DateTimeOffset(year, 12, 20, 0, 0, 0, new TimeSpan(0));
如果使用给定季节的特定日期范围,则无需每天检查范围内的日期;我认为应该每3个月执行一次,例如
// get start and end as DateTime
int year;
DateTime springStart, summerStart, autumnStart, winterStart;
for (DateTime date = start; date < end; date = date.AddMonths(3))
{
year = date.Year;
springStart = new DateTime(year, 3, 21);
//etc...
if (date >= springStart && date < summerStart)
{ //etc...}
else if (date >= winterStart || date < springStart)
{ //etc...}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句