C# for循环出现问题,正在尝试将列表声明从列表字符串拆分为datetime转换

C# for循环出现问题,正在尝试将列表声明从列表字符串拆分为datetime转换,c#,datetime,string-conversion,C#,Datetime,String Conversion,因此,我正在尝试制作一个“PTO计算器”,它将计算一年中剩余的百分比(以工作日为单位)与剩余的PTO工作小时百分比。基本上,我可以使用一个应用程序来快速查看我是否在一整年中过快地消耗分配的带薪休假时间。这是我到目前为止得到的 using System; using System.Globalization; using System.Linq; class Program { static void Main() { int PTOHoursTotal = 144; int PT

因此,我正在尝试制作一个“PTO计算器”,它将计算一年中剩余的百分比(以工作日为单位)与剩余的PTO工作小时百分比。基本上,我可以使用一个应用程序来快速查看我是否在一整年中过快地消耗分配的带薪休假时间。这是我到目前为止得到的

using System;
using System.Globalization;
using System.Linq;
class Program
{
static void Main()
{
    int PTOHoursTotal = 144;
    int PTOleft = 91;//user inputs the number of PTO hours remaining
    int workdays = 366;//the for loop below will run through the entire year and deduct 
    //holidays and weekends from 366 to give the total number of workdays in the year 
    var Holidays = new[]
    {
        "February 17, 2020", "May 25, 2020",
        "July 3, 2020", "September 7, 2020",
        "October 12, 2020", "November 11, 2020",
        "November 26, 2020", "December 25, 2020"
    }.Select(str => DateTime.ParseExact(str, "MMMM d, yyyy", CultureInfo.InvariantCulture));
    for (DateTime i = DateTime(2020, 1, 1); i < (2020, 12, 31); i.AddDays(1))
    {
        if (Holidays.Contains(i) || i.DayOfWeek == Saturday || i.DayOfWeek == Sunday)
        {
            workdays--;
        }
        Console.WriteLine(workdays);
    }
}
使用系统;
利用制度全球化;
使用System.Linq;
班级计划
{
静态void Main()
{
整小时总数=144;
int PTOleft=91;//用户输入剩余的PTO小时数
int workdays=366;//下面的for循环将贯穿全年并扣除
//假期和周末从366开始,给出一年中的总工作日数
var假日=新[]
{
“2020年2月17日”、“2020年5月25日”,
“2020年7月3日”、“2020年9月7日”,
“2020年10月12日”、“2020年11月11日”,
“2020年11月26日”、“2020年12月25日”
}.Select(str=>DateTime.ParseExact(str,“MMMM d,yyyy”,CultureInfo.InvariantCulture));
对于(DateTime i=DateTime(2020,1,1);i<(2020,12,31);i.AddDays(1))
{
if(假日.包含(i)| | i.DayOfWeek==周六| | i.DayOfWeek==周日)
{
工作日--;
}
控制台写入线(工作日);
}
}

我很确定我的for循环有问题,而且最重要的是,如果有人能展示一种方法,将已声明的假日字符串列表从字符串到日期时间的转换中分离出来,那将不胜感激。根据一些日期计算网站,最终的工作日数应该是251左右。

i、 AddDays(1)
返回新的日期,它不会改变
i
。因此您必须改为执行
i=i.AddDays(1)
。“如果有人能找到一种方法,将声明的假日字符串列表从字符串转换为日期时间中拆分出来”-这到底是什么意思?好吧,我从另一个来源得到了一些帮助,并做了一些必要的修复,这是我到目前为止的for循环,不幸的是它仍然不起作用,for(DateTime I=新DateTime(2020,1,1);I<新DateTime(2020,12,31);i=i.AddDays(1)){if(Holidays.Contains(i)| | i.DayOfWeek==周六| | | i.DayOfWeek==周日){workdays--}Console.WriteLine(workdays);}请您的问题添加新信息。请添加说明,说明新代码如何无法提供预期结果。有例外吗?不编译吗?太低了?过高?定义“工作日”。是不包括周末的所有日子,还是不包括周末和公共假日的所有日子?如果是后者,则会因国家而异。