如何实现输入日期获取对应星期几?C#程序开发问询
解决C#获取日期并输出对应星期几的问题
嘿,你已经搞定了获取用户输入的核心部分,接下来咱们把功能补全,让程序能准确输出指定日期的星期几。这里给你一套完整且健壮的实现方案:
using System; class Program { static void Main() { int day, month, year; // 获取并验证日输入 Console.WriteLine("Enter the day..."); while (!int.TryParse(Console.ReadLine(), out day) || day < 1 || day > 31) { Console.WriteLine("Please enter a valid day (1-31)!"); } // 获取并验证月输入 Console.WriteLine("Enter the month..."); while (!int.TryParse(Console.ReadLine(), out month) || month < 1 || month > 12) { Console.WriteLine("Please enter a valid month (1-12)!"); } // 获取并验证年输入 Console.WriteLine("Enter the year..."); while (!int.TryParse(Console.ReadLine(), out year) || year < 1) { Console.WriteLine("Please enter a valid positive year!"); } try { // 创建DateTime对象处理日期逻辑 DateTime inputDate = new DateTime(year, month, day); // 直接输出英文全称的星期几 Console.WriteLine($"The day of the week is: {inputDate.DayOfWeek}"); } catch (ArgumentOutOfRangeException) { Console.WriteLine("Error: The date you entered is invalid (e.g., February 30th)!"); } } }
关键细节说明
- 我把你原来的
int.Parse换成了int.TryParse,还加了循环验证逻辑——这样用户输入非整数或者超出合理范围的数值时,程序不会直接崩溃,而是提示重新输入,实用性更强。 .NET自带的DateTime类已经帮我们封装了所有日期计算的复杂逻辑,直接传入年、月、日就能创建有效的日期对象。DayOfWeek是一个枚举类型,调用inputDate.DayOfWeek就能直接得到对应的星期几,它的默认ToString()输出就是你需要的英文全称(比如例子里的Thursday)。- 加了
try-catch块专门处理无效日期的情况(比如2月30日、4月31日这类不存在的日期),给用户清晰的错误提示。
额外小技巧
如果需要输出星期的缩写形式(比如Thu),可以用inputDate.ToString("ddd");要是想输出中文星期几,直接用inputDate.DayOfWeek.ToString("G", new System.Globalization.CultureInfo("zh-CN"))就行。
内容的提问来源于stack exchange,提问作者EP1X WARR10R
相关产品推荐
相关产品推荐

