Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要找到周转时间吗_C# - Fatal编程技术网

C# 需要找到周转时间吗

C# 需要找到周转时间吗,c#,C#,我在算帐。我有3个参数,如当前日期,达期和假日列表(日期)。 静态列表日期=新列表(); 静态DateTime StartDate=DateTime.Now; 静态void Main(字符串[]参数) { 添加(DateTime.Now.AddDays(20)); 添加(DateTime.Now.AddDays(10)); 添加(DateTime.Now.AddDays(3)); TatDueDateCalculator(DateTime.Now,10,Holidates); } 私有静态Dat

我在算帐。我有3个参数,如
当前日期
达期
假日列表(日期)。

静态列表日期=新列表();
静态DateTime StartDate=DateTime.Now;
静态void Main(字符串[]参数)
{
添加(DateTime.Now.AddDays(20));
添加(DateTime.Now.AddDays(10));
添加(DateTime.Now.AddDays(3));
TatDueDateCalculator(DateTime.Now,10,Holidates);
}
私有静态DateTime TatDueDateCalculator(DateTime AssignDate、int TatPeriod、列表假日)
{
DateTime dueDate=AssignDate.AddDays(TatPeriod);
int holiDayCount=Holidays.FindAll(x=>x>=AssignDate&x dueDate>=AssignDate&dueDate 0)
dueDate=dueDate.AddDays(holiDayCount);
归还日期;
}
TatDueDateCalculator()
需要返回
dueDate

情况如下:

  • 连续
    假日
  • ListHoliday
    仅包含一个匹配的
    dueDate
    ,但列表中的值较大 例如

    DueDate
    “2019-05-13”
    ,假日列表包含以下日期。
    “2019-05-10”
    “2019-05-13”
    “2019-05-12”
    。在这种情况下,我得到了
    2
    TAT。但是expected是
    1

    下面的代码产生了预期的结果(根据您在注释中的示例)。它还包括最初在第一个到期日之后的假期

    static void Main(string[] args)
    {
        var holidays = new List<DateTime>()
        {
            new DateTime(2019,05,03),
            new DateTime(2019,05,04),
            new DateTime(2019,05,06),
            new DateTime(2019,05,10),
        };
        int tatPeriod = 5;
        var assignDate = new DateTime(2019, 05, 01);
        var dueDate = Enumerable.Range(0, tatPeriod + holidays.Count)
                                .Select(offset => assignDate.AddDays(offset))
                                .Except(holidays)
                                .ElementAt(tatPeriod - 1);
    
        Console.WriteLine(dueDate);
        Console.Read();
    }
    
    static void Main(字符串[]args)
    {
    var holidays=新列表()
    {
    新日期时间(2019,05,03),
    新日期时间(2019,05,04),
    新日期时间(2019,05,06),
    新日期时间(2019年5月10日),
    };
    int-tatPeriod=5;
    var assignDate=新日期时间(2019年5月1日);
    var dueDate=可枚举的.Range(0,tatPeriod+holidays.Count)
    .Select(offset=>assignDate.AddDays(offset))
    。假期除外
    .ElementAt(第1期);
    控制台写入线(截止日期);
    Console.Read();
    }
    
    以下代码生成预期结果(根据注释中的示例)。它还包括最初在第一个到期日之后的假期

    static void Main(string[] args)
    {
        var holidays = new List<DateTime>()
        {
            new DateTime(2019,05,03),
            new DateTime(2019,05,04),
            new DateTime(2019,05,06),
            new DateTime(2019,05,10),
        };
        int tatPeriod = 5;
        var assignDate = new DateTime(2019, 05, 01);
        var dueDate = Enumerable.Range(0, tatPeriod + holidays.Count)
                                .Select(offset => assignDate.AddDays(offset))
                                .Except(holidays)
                                .ElementAt(tatPeriod - 1);
    
        Console.WriteLine(dueDate);
        Console.Read();
    }
    
    static void Main(字符串[]args)
    {
    var holidays=新列表()
    {
    新日期时间(2019,05,03),
    新日期时间(2019,05,04),
    新日期时间(2019,05,06),
    新日期时间(2019年5月10日),
    };
    int-tatPeriod=5;
    var assignDate=新日期时间(2019年5月1日);
    var dueDate=可枚举的.Range(0,tatPeriod+holidays.Count)
    .Select(offset=>assignDate.AddDays(offset))
    。假期除外
    .ElementAt(第1期);
    控制台写入线(截止日期);
    Console.Read();
    }
    
    拉塞·维格斯·瑟尔·卡尔森的答案对我来说很有用。

    链接:gist.github.com/lassevk/bbee7a626b3126ebb8e59a21ebdcb15b

    代码:

    public static DateTime tatduedatacalculator(DateTime assigningDate,int-tatCount,IEnumerable假日)
    {
    HashSet holidayLookup=newHashSet(holidays.Select(dt=>dt.Date));
    DateTime dueDate=分配日期。日期;
    而(tatCount>1)
    {
    dueDate=dueDate.AddDays(1);
    while(holidayLookup.Contains(dueDate))
    dueDate=dueDate.AddDays(1);
    塔特肯——;
    }
    归还日期;
    }
    
    拉塞·维格斯·瑟尔·卡尔森的答案对我来说很有用。

    链接:gist.github.com/lassevk/bbee7a626b3126ebb8e59a21ebdcb15b

    代码:

    public static DateTime tatduedatacalculator(DateTime assigningDate,int-tatCount,IEnumerable假日)
    {
    HashSet holidayLookup=newHashSet(holidays.Select(dt=>dt.Date));
    DateTime dueDate=分配日期。日期;
    而(tatCount>1)
    {
    dueDate=dueDate.AddDays(1);
    while(holidayLookup.Contains(dueDate))
    dueDate=dueDate.AddDays(1);
    塔特肯——;
    }
    归还日期;
    }
    
    什么是周转时间?另一方面,TAT?TAT是指周转时间——这是指同意完成指定活动、步骤或流程的时间。TAT是一个指标,可能构成商定的SLA的一部分。TAT通常与“及时性”和“完整性”度量相关联。您能解释一下如何计算TAT,而不是代码吗?例如,我需要开始“2019-05-01”的工作,并在“2019-05-05”完成该工作。TAT周期为5。但在这期间,我有“2019-05-03”、“2019-05-04”、“2019-05-06”、“2019-05-10”等假期。在这种情况下,两天的假期和完成日期之间的一个工作日。因此,TAT期限增加了2天,那么我的新完成日期是“2019-05-07”。但我还有一个假期是“2019-05-06”,所以结果日期是“2019-05-08”。(工作日为:“2019-05-01”、“2019-05-02”、“2019-05-05”、“2019-05-07”、“2019-05-08”。@LasseVågsætherKarlsenIf
    TatPeriod
    为1,您的意思是“返回开始日期”吗?什么是周转时间?TAT?TAT,另一方面,是指周转时间-这是约定完成指定活动、步骤或流程的时间。TAT是一个指标,可能构成商定SLA的一部分。TAT通常与“及时性”和“完整性”度量相关联。您能解释一下如何计算吗TAT,而非代码?例如,我需要在“2019-05-01”开始工作,并在“2019-05-05”完成该工作。TAT期限为5。但在这期间,我有“2019-05-03”、“2019-05-04”、“2019-05-06”、“2019-05-10”等假期。在这种情况下,完成日期之间有2天的假期和一个工作日。因此,TAT期限增加了2天,那么我的新完成日期是“2019-05-07”。
    public static DateTime TatDueDateCalculator(DateTime assigningDate, int tatCount, IEnumerable<DateTime> holidays)
        {
            HashSet <DateTime> holidayLookup = new HashSet<DateTime>(holidays.Select(dt => dt.Date));
    
            DateTime dueDate = assigningDate.Date;
            while (tatCount > 1)
            {
                dueDate = dueDate.AddDays(1);
                while (holidayLookup.Contains(dueDate))
                    dueDate = dueDate.AddDays(1);
                tatCount--;
            }
            return dueDate;
        }