Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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#Prinitng修改日期范围_C#_Date_Datetime_Console Application_Date Range - Fatal编程技术网

控制台中的C#Prinitng修改日期范围

控制台中的C#Prinitng修改日期范围,c#,date,datetime,console-application,date-range,C#,Date,Datetime,Console Application,Date Range,我需要在控制台中接受输入参数并打印日期范围,如示例所示: 输入:“01.01.2017 05.01.2017” 产出:“2017年1月1日至5月1日” 所以,正如你们所看到的,日期必须用点隔开,并且在它们之间用破折号打印出来。此外,如果开始日期和结束日期都具有相同的月份和年份,则只打印一次 是否有人可以建议实现这一点的好方法?只需根据需要格式化日期,并添加传统的案例检查 DateTime date1 = new DateTime(); DateTime date2

我需要在控制台中接受输入参数并打印日期范围,如示例所示:

输入:“01.01.2017 05.01.2017”

产出:“2017年1月1日至5月1日”

所以,正如你们所看到的,日期必须用点隔开,并且在它们之间用破折号打印出来。此外,如果开始日期和结束日期都具有相同的月份和年份,则只打印一次


是否有人可以建议实现这一点的好方法?

只需根据需要格式化日期,并添加传统的案例检查

        DateTime date1 = new DateTime();
        DateTime date2 = new DateTime();

//while not valid input dates format...
        bool valid = false;
        while (!valid)
        {
            Console.WriteLine("Enter start date:");
            string dateEntered1 = Console.ReadLine();
            Console.WriteLine("Enter end date:");
            string dateEntered2 = Console.ReadLine();

             bool isvalidDate1 = DateTime.TryParse(dateEntered1,out date1);
            bool isvalidDate2 = DateTime.TryParse(dateEntered2,out date2);
//check if date parsing was sucess
            if(isvalidDate1 && isvalidDate2)
            {
                valid = true;
            }
            else
            {
                Console.WriteLine("Dates entered is in incorrect format!");

            }
        }
        string period = "";
        if (date1.Month == date2.Month && date1.Year == date2.Year)
        {
            period = string.Format("{0} - {1}", date1.ToString("dd."), date2.ToString("dd.MM.yyyy"));
        }
        else
        {
            period = string.Format("{0} - {1}", date1.ToString("dd.MM.yyyy"), date2.ToString("dd.MM.yyyy"));
        }
        Console.Write(period);
        Console.Read();

您肯定应该添加更多的细节,包括代码。请在这里查看如何提问:我将其分为两部分:1)将输入转换为日期时间值。2) 适当地格式化这对值。它们是完全可分离的,我希望你能在其他问题中找到至少第一部分的答案。谢谢。但我现在不想用DateTime。我必须读取某人的字符串输入。我真的不知道如何将字符串值转换为DateTime参数。更新为从控制台读取输入的值(没有任何验证,是否正确输入了日期)添加了验证,因此如果日期的有效字符串在两个输入中都有效,则输出将起作用。这正是我想要的。谢谢!代码的另一部分中只缺少else语句。很抱歉,遗漏了它,但如果您可以读取代码,则没有问题:)