如何检查是否一个日期时间范围是另外3 MONTH日期范围内 [英] How to check if a DateTime range is within another 3 month DateTime range

查看:190
本文介绍了如何检查是否一个日期时间范围是另外3 MONTH日期范围内的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我有一个dB的开始日期和每条记录的结束日期。

Hi I have a Start Date and End Date per record in a db.

我需要检查,看看那里的时间落在2年时间打破成两批季度则显示什么宿舍每个记录落入。

I need to check to see where the time period falls in a 2 year period broken into two lots of quarters then display what quarters each record falls into.

1季度,包括6月09日7月09,09年8月结果
区2包括9月9日,09年10月,09年11月结果
区3包括12月9日,1月10日,2月10日结果
第四季度,包括3月10日,4月10日,5月10日结果
Quaretr 5包括6月10日,7月10日...

Quarter 1 includes June 09, Jul 09, Aug 09
Quarter 2 includes Sept 09, Oct 09, Nov 09
Quarter 3 includes Dec 09, Jan 10, Feb 10
Quarter 4 includes Mar 10, Apr 10, May 10
Quaretr 5 includes Jun 10, Jul 10...

如01/10/09 - 10年1月6日将属于小区2,3,4和5

e.g. 01/10/09 - 01/06/10 would fall into quarters 2, 3, 4 & 5

我很新的.NET所以任何例子将不胜感激。

I am very new to .NET so any examples would be much appreciated.

推荐答案

您会叫IntervalInQuarters如下:

You would call IntervalInQuarters as follows:

IntervalInQuarters(new DateTime(2007, 10, 10), new DateTime(2009, 10, 11));



该函数返回季度的名单开始日期。注意,宿舍的范围搜索是在函数本身内定义。请根据您的情况进行编辑。他们关键的一点是要确保间隔/季度路口的逻辑是正确的。

The function returns a list of quarter start dates. Note that the range of quarters searched is defined within the function itself. Please edit as appropriate for your situation. They key point is to make sure the interval/quarter intersection logic is right.

private List<DateTime> IntervalInQuarters(DateTime myStartDate, DateTime myEndDate)
{
    DateTime quarterStart = new DateTime(2006, 06, 01);
    DateTime nextQuarterStart = new DateTime(2006, 09, 01);
    DateTime finalDate = new DateTime(2011, 01, 01);
    List<DateTime> foundQuarters = new List<DateTime>();

    while (quarterStart < finalDate)
    {
        // quarter intersects interval if:
        // its start/end date is within our interval
        // our start/end date is within quarter interval
        DateTime quarterEnd = nextQuarterStart.AddDays(-1);
        if (DateInInterval(myStartDate, quarterStart, quarterEnd) ||
            DateInInterval(myEndDate, quarterStart, quarterEnd) ||
            DateInInterval(quarterStart, myStartDate, myEndDate) ||
            DateInInterval(quarterEnd, myStartDate, myEndDate))
        {
            foundQuarters.Add(quarterStart);
        }

        quarterStart = nextQuarterStart;
        nextQuarterStart = nextQuarterStart.AddMonths(3);
    }

    return foundQuarters;
}

private bool DateInInterval(DateTime myDate, DateTime intStart, DateTime intEnd)
{
    return ((intStart <= myDate) && (myDate <= intEnd));
}

这篇关于如何检查是否一个日期时间范围是另外3 MONTH日期范围内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆