我需要一种方法来whatsUrBirthDay = Console.ReadLine();
我可以轻松地string whatsUrBirthDay;
但我希望能够存储他们的生日,以便我可以相对地#39;以后很容易回忆起来,并可能用它进行计算。
是否有这样的数据类型允许特定格式的MM / DD / YYYY?我假设我可以要求将月份作为字符串,然后在之后查找匹配的拼写或数字= =某个变量,但肯定会有更简单的方法吗?
提前致谢!
修改我想添加“不是”,这不是我选择的变量 - 只是这样做,所以你会理解我要求的是什么。
答案 0 :(得分:1)
最好提示用户以某种特定格式输入日期,让它为dd-MM-yyyy
并显示示例以便您可以验证输入并存储到DateTime变量;请参阅以下代码:
string myDateFormat = "dd-MM-yyyy";
Console.WriteLine("Enter your Birth Date in the format {0} \n (example : {1}) : ",myDateFormat,DateTime.Today.ToString(myDateFormat));
DateTime userBirthday;
if (DateTime.TryParseExact(Console.ReadLine(), myDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out userBirthday))
{
Console.WriteLine("You lived {0} days from {1} ", (DateTime.Today - userBirthday).TotalDays, userBirthday.ToString(myDateFormat));
}
else
{
Console.WriteLine("Wrongly formated input");
}
注意:如果输入的格式不合适,那么基于我们可以显示警告消息,TryParseExact
将返回false
答案 1 :(得分:0)
如评论中所述,日期的正确类型为DateTime
。您可以使用Parse
- 方法实现您想要的效果:
DateTime birthday = DateTime.Parse(Console.ReadLine(), out birthday);
DateTime还提供TryParse
- 方法,可用于处理无效输入:
DateTime birthday;
// error handling similar to the following (if-clause work fine to)
while(!DateTime.TryParse(Console.ReadLine()))
{
Console.WriteLine("Invalid input, try again.");
}
如果您不熟悉C#并希望了解有关解析日期/时间的更多信息,请考虑阅读https://www.dotnetperls.com/datetime-parse,其中通过简单示例解释最重要的方面(包括错误处理等)