计算两个给定日期之间的银行假期并以分钟为单位显示差异

我正在尝试计算两个给定日期之间的银行假日数量,例如31/10/2019 10:00:00和01/11/2019 08:00:00假设01/11/2019是银行假日。我应该以分钟为单位的总和为480分钟以得到银行假日差额。我正在使用以下代码,如果给定日期之一与银行休假日期相同,则我的代码返回1440,这是错误的,有人可以建议如何实现这一点。谢谢

 DateTime firstDay = new DateTime(2019,10,31,0);
DateTime lastDay = new DateTime(2019,11,1,8,0);

public static int CountOfBusinessClosures(DateTime firstDay,DateTime lastDay,IOrganizationService service)
{
   // firstDay = firstDay.Date;
   // lastDay = lastDay.Date;

    var count = 0;         

    var businessClosuresdate = new DateTime(2019,0);//GetBusinessClosureCalendarRules(service);

    // Count the number of bank holidays in between the given dates

    if (firstDay <= businessClosuresdate && businessClosuresdate <= lastDay)
    {
        count++;
    }

    return count;
}

OR

 public static double CountOfBusinessClosures2(DateTime firstDay,IOrganizationService service)
    {
       var firstDay1 = firstDay.Date;
       var lastDay1 = lastDay.Date;

        var count = 0;            
        double t = 0;           

       // var businessClosures = GetBusinessClosureCalendarRules(service);

        // Count the number of bank holidays during the time interval
       // foreach (var closure in businessClosures)
       // {               
            var startDate = 01/11/2019 00:00:00 //(DateTime)closure["effectiveintervalstart"];
            var endDate = 02/11/2019 00:00:00 // (DateTime)closure["effectiveintervalend"];
            DateTime bh1 = startDate.Date;

            if (firstDay1 <= bh1 && bh1 <= lastDay1)
            {
                //  count++;
                if (firstDay.Date < startDate.Date && startDate.Date != endDate.Date)
                {
                    t += 1440; // 24h * 60 min
                }

                else
                {
                    double difference;
                    difference = (endDate - startDate).TotalMinutes;
                    difference = difference - (firstDay - startDate).TotalMinutes;
                    t += difference;
                }

            }
       // }
        return t;
    }

private static IEnumerable<Entity> GetBusinessClosureCalendarRules(IOrganizationService service)
    {

        // Get Organization Business Closure Calendar Id
        var organization = service.Retrieve("organization",_orgId,new ColumnSet("businessclosurecalendarid"));

        var query = new QueryExpression("calendar")
        {
            ColumnSet = new ColumnSet(true),Criteria = new FilterExpression()
        };

        // Add condition to get Get Calander where CalanderId is equal to Organization's businessclosurecalendarid
        query.Criteria.AddCondition(new ConditionExpression("calendarid",ConditionOperator.Equal,organization["businessclosurecalendarid"].ToString()));

        // Get Calendar
        var businessClosureCalendar = service.RetrieveMultiple(query).Entities[0];
        return businessClosureCalendar == null || businessClosureCalendar.GetattributeValue<EntityCollection>("calendarrules") == null ? null : businessClosureCalendar.GetattributeValue<EntityCollection>("calendarrules").Entities;
    }
rhrhok 回答:计算两个给定日期之间的银行假期并以分钟为单位显示差异

@Bellam尝试一下,看它是否满足您的需求:

// Unit Test Class
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void C58840237T01()
    {
        DateTime firstDay = new DateTime(2019,10,31,0);
        DateTime lastDay = new DateTime(2019,11,1,0);
        double totalMinutesBusinessIsClosed = C58840237.MinutesBusinessIsClosed(firstDay,lastDay);
        Assert.IsTrue(totalMinutesBusinessIsClosed == 480);
    }
}


// Sample Class
public class C58840237
{
    public static double MinutesBusinessIsClosed(DateTime firstDay,DateTime lastDay)
    {
        double t = 0;

        // Holiday 01
        var h01Start = Convert.ToDateTime("11/01/2019 08:00:00");
        var h01End = Convert.ToDateTime("11/01/2019 16:00:00");

        // Holiday is in range
        if (firstDay <= h01Start && h01Start >= lastDay)
        {
            return (h01End - h01Start).TotalMinutes;
        }

        return t;
    }
}

编辑:我意识到我们的日期时间格式是不同的,但是很容易调整。

本文链接:https://www.f2er.com/3108906.html

大家都在问