【发布时间】:2015-04-17 10:18:55
【问题描述】:
我需要输入代表一系列日期的 2 个日期。对于这些给定的日期,我需要返回这些日期之间的季节列表。是否有可能有一个解决方案而无需在该范围之间的所有日子里进行迭代?
例如日期:25/12/2014 - 17/7/2015
结果将是:冬、春、夏
季节已经被指定为一个常数值
季节:
- 冬季:12 月 21 日 - 3 月 20 日
- 春季:3 月 21 日 - 6 月 20 日
- 夏季:6 月 21 日 - 9 月 20 日
- 秋季:9 月 21 日 - 21 日 十二月
例如,常量将按如下方式存储。我发现的主要问题是冬季,因为年份将增加一,月份将从 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));
【问题讨论】:
-
冬、春、夏、秋的具体日期定义是什么?
-
假设您知道每个季节的开始和结束,您可以简单地检查第 X 季的开始和结束是否在该范围内。
-
我不知道是谁重新提出了这个问题,但这个问题和closed as duplicate by me 实际上 挖掘了同样的问题,即根据
DateTime获得季节。其他事情(计算日期差异,检查这些差异属于哪个季节等)是一些细节。当然,这些只是我的看法,它们通常是错误的。 -
@LasseV.Karlsen 更新并包括我的赛季开始和结束日期
-
@SonerGönül 是的,我看到了那个帖子,你说得对,它们很相似,如果我使用这种逻辑,我需要在我的范围内生成一个日期列表并检查每个日期,这将是昂贵的.