gpt4 book ai didi

c# - 可以使 C# DateTime.TryParse 需要日、月和年吗?

转载 作者:太空狗 更新时间:2023-10-29 23:12:38 24 4
gpt4 key购买 nike

我正在使用 DateTime.TryParse 来解析从聊天机器人捕获的出生日期。由于聊天机器人的对话性质,用户可以输入各种格式的 DOB,例如“1980 年 6 月 5 日”或“1974 年 3 月 21 日”。从这个意义上说,DateTime.TryParse 是完美的,因为它可以很好地解析这些格式和其他格式。

但是,如果您提供部分日期,例如“10/24”或“1977 年 6 月”,TryParse 将成功,并且将默认缺少日期部分。对于 DOB,这并不理想,因为我们不想接受不完整的日期。有什么方法可以防止这种默认设置并告诉解析器只成功解析定义了日、月、年这三个时间的日期吗?

最佳答案

您可以对多种格式使用 TryParseExact。必须列出您想要的每种格式可能会有点乏味,但您可以通过这种方式明确说明。

MSDN documentation

以下代码是一个使用两种格式的简单、人为的示例。我使用的是 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))
{

}

您可以对 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))
{

}

关于c# - 可以使 C# DateTime.TryParse 需要日、月和年吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45848061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com