使用c#将字符串解析为日期

时间:2016-05-27 19:45:24

标签: c# string datetime

有没有办法将以下字符串解析为日期而不将其拆分为 - 字符?

25-11-2014
5-6-2013
3-10-2012

我在另一个案例中使用了以下代码。但由于缺少前导零,它不起作用。

DateTime.ParseExact("06-05-2016", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);

2 个答案:

答案 0 :(得分:3)

考虑您的格式字符串

Formatting strings对于他们期望进入的内容非常严格。如果您表明您将收到两位数的日期,那么它将预期领先零。

因此,您可以考虑将格式字符串更改为可接受单个字符日期和月份的字符串,这将满足您提供的所有示例输入as seen here

DateTime.ParseExact(input, "d-M-yyyy", System.Globalization.CultureInfo.InvariantCulture);

处理多种格式

此外,DateTime.ParseExact() method has an overload that accepts multiple formatting strings允许基本上定义您的日期可能包含的多种格式:

DateTime.ParseExact(input, new []{ "d-M-yyyy", "dd-MM-yyyy" }, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None);

答案 1 :(得分:2)

请参阅Custom Date and Time Format Strings

您的代码:

DateTime.ParseExact("06-05-2016", "dd-MM-yyyy", ...);

明确表示“寻找一个2位数的日期和月份”。如果您想要个位数月/天(没有前导零),只需更改格式字符串...

DateTime.ParseExact("06-05-2016", "d-M-yyyy", ...)

这将允许您使用1-31天而不是01-31,以及1-12个月而不是01-12个月。