【问题标题】:Get the seasons within a range of dates获取日期范围内的季节
【发布时间】: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 是的,我看到了那个帖子,你说得对,它们很相似,如果我使用这种逻辑,我需要在我的范围内生成一个日期列表并检查每个日期,这将是昂贵的.

标签: c# algorithm date


【解决方案1】:

如果您使用为季节指定的特定日期范围,则无需检查该范围内的每一天;我认为每 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...}
}

【讨论】:

  • 谢谢,这是完美解决我的问题的最简单的解决方案> 我过度思考这个问题,并没有现实主义一个简单的符号可以解决我从冬天到春天的问题。
【解决方案2】:

季节是一个相对术语,取决于位置。就像在澳大利亚一样,它是夏季的结束,而在亚洲则是夏季的开始。此外,季节的持续时间因全球而异。在欧洲,春天持续的时间更长,而在南亚,它只是名字而已。所以这是一个非常广泛的要求。

【讨论】:

  • 即使我已经看到了重复问题的答案,并且就季节持续时间的变化而言并不完整
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2013-03-02
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2014-01-07
相关资源
最近更新 更多