gpt4 book ai didi

c# - 解析带和不带前导零的 DateTime

转载 作者:太空狗 更新时间:2023-10-29 21:07:59 26 4
gpt4 key购买 nike

我有一个文本框,用户可以在其中键入日期。我只需要以下格式:

12.12.2017
12.02.2017
12.2.2017
02.12.2017
2.12.2017
02.02.2017
2.2.2017

所以可以有前导零也可以没有。

我目前正在使用以下代码解析 DateTime:

DateTime myDate = new DateTime();
bool success = DateTime.TryParseExact(TboDate.Text, "dd.MM.yyyy",
CultureInfo.CurrentUICulture, DateTimeStyles.None, out myDate);

12.2.2017 之类的日期无法使用该代码成功解析。但我不想每次都检查字符串然后用匹配的格式解析它 d.M.yyyy, dd.M.yyyy, d.MM.yyyy 等等。有没有更简单的方法来告诉方法可以有前导零?

最佳答案

它们都可以通过 Parse/TryParse 毫无问题地被解析 f.e.具有去德文化:

var dates = new[] { "12.12.2017", "12.02.2017", "12.2.2017", "02.12.2017", "2.12.2017", "02.02.2017", "2.2.2017" };      

foreach (var dateStr in dates)
{
DateTime dt;
if (!DateTime.TryParse(dateStr, CultureInfo.CurrentUICulture, DateTimeStyles.None, out dt))
{
Console.WriteLine("not valid: " + dateStr);
}
}

但是如果您指定了所有允许的格式,您也可以使用 ParseExact:

string[] allowedFormats = { "dd.MM.yyyy", "d.MM.yyyy", "dd.M.yyyy", "d.M.yyyy" };
foreach (var dateStr in dates)
{
DateTime dt;
if (!DateTime.TryParseExact(dateStr, allowedFormats, CultureInfo.CurrentUICulture, DateTimeStyles.None, out dt))
{
Console.WriteLine("not valid: " + dateStr);
}
}

更新

正如 Jon Skeet 所提到的,没有必要指定多个,这会处理所有:"d.M.yyyy"

关于c# - 解析带和不带前导零的 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43317709/

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