【问题标题】:C# Prinitng modified date range in consoleC# 在控制台中打印修改后的日期范围
【发布时间】:2018-04-04 12:06:21
【问题描述】:

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

输入:“01.01.2017 05.01.2017”

输出:“01 - 05.01.2017”

因此,如您所见,日期必须用点分隔并在它们之间用破折号打印。更重要的是,如果开始日期和结束日期都具有相同的月份和年份,则它们只打印一次。

有没有人可以提出实现这一目标的好方法?

【问题讨论】:

  • 您绝对应该添加更多细节,包括代码。请在此处查看如何提问:stackoverflow.com/help/how-to-ask
  • 我会将其分为两部分:1)将输入转换为 DateTime 值。 2)适当地格式化该对值。它们是完全可分离的,我希望你能在其他问题中至少找到第一部分的答案。

标签: c# date datetime console-application date-range


【解决方案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();

【讨论】:

  • 谢谢。但我不想使用 DateTime.Now。我必须阅读某人的字符串输入。我真的不知道我应该如何将字符串值转换为 DateTime 参数。
  • 更新为从控制台输入的值中读取(没有任何验证,输入的日期是否正确)
  • 添加了验证,因此输出将起作用,如果日期的有效字符串将在两个输入中
  • 太棒了。这正是我想要的。非常感谢!在后面的代码中只缺少 else 语句。
  • 错过了,对不起,但如果能读代码,那就没问题了:)
猜你喜欢
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多