我通常在 LINQ 查询中使用这种扩展方法:
public static DateTime? TryGetDate(this string dateString, string format = null)
{
DateTime dt;
bool success = format == null ? DateTime.TryParse(dateString, out dt) : DateTime.TryParseExact(dateString, format, null, DateTimeStyles.None, out dt);
return success ? dt : (DateTime?)null;
}
您以这种方式使用它:
user.DataNascita = txtDataDiNascita.Text.TryGetDate();
IFormatProvider
这是具有多种格式和(不同文化)的另一个重载:
public static DateTime? TryGetDate(this string dateString, IFormatProvider provider, params string[] formats)
{
DateTime dt;
var success = DateTime.TryParseExact(dateString, formats, provider, DateTimeStyles.None, out dt);
return success ? dt : (DateTime?)null;
}