Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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# 如何以有限制的特定格式询问出生日期?_C#_Date_Dob - Fatal编程技术网

C# 如何以有限制的特定格式询问出生日期?

C# 如何以有限制的特定格式询问出生日期?,c#,date,dob,C#,Date,Dob,我对C#很陌生,我想我脑子里想了些什么,但不太明白 所以我得到了这个学校项目,需要询问用户的名字、姓氏和出生日期,但有一定的限制。我能猜出名字,但日期问题仍然存在 出生日期应为DD.MM.YYYY。格式和格式有一定的限制: 日期应介于01-31之间 01-12之间的月份 1900-2050之间的年份 我可以让它询问,但它不会指定格式,我也不知道使用哪个变量。以自定义格式解析日期最合适 您只需要查找使用日期格式的区域性,例如“fr CH” 然后使用上述方法检查日期格式是否正确。它会自动检查日期是否

我对C#很陌生,我想我脑子里想了些什么,但不太明白

所以我得到了这个学校项目,需要询问用户的名字、姓氏和出生日期,但有一定的限制。我能猜出名字,但日期问题仍然存在

出生日期应为
DD.MM.YYYY
。格式和格式有一定的限制:

日期应介于
01-31之间

01-12之间的月份

1900-2050之间的年份


我可以让它询问,但它不会指定格式,我也不知道使用哪个变量。

以自定义格式解析日期最合适

您只需要查找使用日期格式的区域性,例如
“fr CH”

然后使用上述方法检查日期格式是否正确。它会自动检查日期是否有效,即月份在1到12之间,月份的日期在正确的范围内(1到28、29、30或31,具体取决于月份和年份)

您只需额外检查年份

尝试此代码(我使用了短路运算符
&&
,因此如果解析成功,请检查年份):

DateTime dt;
CultureInfo culture=CultureInfo.CreateSpecificCulture(“fr CH”);
DateTimeStyles=DateTimeStyles.None;
if(DateTime.TryParse(“2018年1月28日”,文化、风格、输出日期)

&&dt.Year>=1900&&dt.Year请编辑您的问题并与我们共享您的代码,我们很乐意提供帮助。我想您可以将输入作为字符串接受,然后使用
DateTime.TryParseExact()
在将该字符串转换为
DateTime
值时指定格式。请注意“限制”您已经定义了不能准确表示日期值。例如,“2018年2月31日”不是有效的日期。不要用日期重新发明轮子,请使用您可用的工具。在这种情况下,从
字符串
解析
日期时间
。尝试了任何方法吗?
我可以让它询问,但它不会指定…
什么是“it”`?控制台程序?如果不是,请尝试DateTimePickera您是否希望将来会有很多用户?@Flydog57这只是文化匹配OP日期的示例:)
DateTime dt;
CultureInfo culture = CultureInfo.CreateSpecificCulture("fr-CH");
DateTimeStyles styles = DateTimeStyles.None;
if(DateTime.TryParse("28.01.2018", culture, styles, out dt)
  && dt.Year >= 1900 && dt.Year <= 2050) // here you check additionally if year is in correct range
    Console.WriteLine("Date successfully parsed!");