我正在使用DateTime.TryParse解析从Chatbot捕获的出生日期.由于Chatbot的会话特性,用户可以以各种格式输入他们的DOB,例如"jun 5 1980"或"3/21/1974".从这个意义上讲,它DateTime.TryParse是完美的,因为它可以解析这些和其他格式.
但是,如果您提供部分日期,例如"10/24"或"1977年6月",TryParse则会成功,并且缺少日期组件将被默认.对于DOB,这并不理想,因为我们不想接受不完整的日期.有没有办法防止这种违约,并告诉解析器只能成功解析定义日,月和年三个日期的日期?
小智 3
您可以将 TryParseExact 与多种格式一起使用。列出您想要的每种格式可能会有点乏味,但这样您就可以明确地了解它。
以下代码是一个使用两种格式的简单、人为的示例。我使用的是 en-US 文化,但您可以根据需要替换您自己的文化(或不变的文化)。
DateTime dt;
var str = "6/5/2007";
if (DateTime.TryParseExact(str, "MM/DD/YYYY", new CultureInfo("en-US"), DateTimeStyles.None, out dt)
|| DateTime.TryParseExact(str, "MM/DD/YY", new CultureInfo("en-US"), DateTimeStyles.None, out dt))
{
}
Run Code Online (Sandbox Code Playgroud)
或者
您可以将第二个重载用于DateTime.TryParseExact. 以下代码与第一个代码示例等效:
DateTime dt;
var str = "6/5/2007";
if (DateTime.TryParseExact(str, new[] { "MM/DD/YYYY", "MM/DD/YY" }, new CultureInfo("en-US"), DateTimeStyles.None, out dt))
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |