![](/img/trans.png)
[英]DateTime.TryParseExact returns false for some string in c#
[英]C# code always returns false from DateTime.TryParseExact method
我正在使用C#应用程序。 我有以下代码来验证日期:
private DateTime? ParseUserInputDate(string providedDate)
{
DateTime validDate;
var dateFormatIsValid = DateTime.TryParseExact(
providedDate,
Constants.DateFormats.UserInput,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out validDate);
return dateFormatIsValid ? validDate : (DateTime?)null;
}
当我通过“2019年2月9日12:00:00 AM”作为providedDate
和UserInput格式为“d / M / YYYY”,它总是返回假。 有人可以帮我解决这个问题吗?
如果要解析时间 ,则必须在模式中提及时间部分 ; 如果必须使用几种模式(例如,有日期和无日期),则可以将它们放入一个TryParseExact
:
private DateTime? ParseUserInputDate(string providedDate) {
// we can simplify the code with a help of out var
return DateTime.TryParseExact(providedDate,
new string[] {
"d/M/yyyy", // Try date first
"d/M/yyyy h:m:s tt", // if fails try date and time
},
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out var validDate)
? validDate
: (DateTime?) null;
}
...
// Date and Time
Console.WriteLine(ParseUserInputDate("2/09/2019 12:00:00 AM")
.Value
.ToString("dd.MM.yyyy HH:mm:ss"));
// Date only
Console.WriteLine(ParseUserInputDate("2/09/2019")
.Value
.ToString("dd.MM.yyyy HH:mm:ss"));
结果:
02.09.2019 00:00:00
02.09.2019 00:00:00
格式和输入完全不同。 如果您通过“ 2/09/2019 12:00:00 AM”,则将格式更改为“ d / M / yyyy h:mm:ss tt”
Private static DateTime? ParseUserInputDate(string providedDate)
{
DateTime validDate;
string[] formats = { "d/M/yyyy h:mm:ss tt", "d/M/yyyy" };
var dateFormatIsValid = DateTime.TryParseExact(
providedDate,
formats,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out validDate);
return dateFormatIsValid ? validDate : (DateTime?)null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.