控制台中的C#Prinitng修改日期范围
我需要在控制台中接受输入参数并打印日期范围,如示例所示: 输入:“01.01.2017 05.01.2017” 产出:“2017年1月1日至5月1日” 所以,正如你们所看到的,日期必须用点隔开,并且在它们之间用破折号打印出来。此外,如果开始日期和结束日期都具有相同的月份和年份,则只打印一次控制台中的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
是否有人可以建议实现这一点的好方法?只需根据需要格式化日期,并添加传统的案例检查
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语句。很抱歉,遗漏了它,但如果您可以读取代码,则没有问题:)