C# 如果datetime中的字符串无效,请在C中设置sql的null datetime类型#
如果datetime中的字符串无效,请在C中设置sql的null datetime类型# 错误:字符串未被识别为有效的日期时间。请重试C# 如果datetime中的字符串无效,请在C中设置sql的null datetime类型#,c#,sql,string,datetime,C#,Sql,String,Datetime,如果datetime中的字符串无效,请在C中设置sql的null datetime类型# 错误:字符串未被识别为有效的日期时间。请重试 record.UpdatedOn = DateTime.ParseExact(customerRow.UpdatedOn, "dd/MM/yyyy", CultureInfo.InvariantCulture); 您使用的是null,这意味着您使用的是当前区域性。如果使用的日期分隔符与/不同,则会出现问题。这就是我使用不变量文化的原因 阅读: “/”自定
record.UpdatedOn =
DateTime.ParseExact(customerRow.UpdatedOn, "dd/MM/yyyy", CultureInfo.InvariantCulture);
您使用的是null
,这意味着您使用的是当前区域性。如果使用的日期分隔符与/
不同,则会出现问题。这就是我使用不变量文化的原因
阅读:
“/”自定义格式说明符表示日期分隔符,该分隔符
用于区分年、月和日适当的
从中检索本地化的日期分隔符
当前或指定属性的DateTimeFormatInfo.DateSeparator属性
文化
根据问题的另一部分,如果日期无效,如何将null
属性设置为null
,您应该使用DateTime.TryParseExact
:
record.UpdatedOn = null;
DateTime updatedOn;
if(DateTime.TryParseExact(customerRow.UpdatedOn, "dd/MM/yyyy", CultureInfo.InvariantCulture))
record.UpdatedOn = updatedOn;
如果DateTime属性未成功解析,是否要将其设置为null
if(DateTime.TryParse(customerRow.UpdatedOn, out record.UpdatedOn) == false)
record.UpdatedOn = null;
你的绳子看起来像什么?您打印出来了吗?在customerRow.UpdatedOn=“NotGiven”中的某个时候,在使用您的代码后出现了相同的错误。@Sandeep:我已经编辑了我的答案。谢谢@Tim我已经添加了我的答案它在初始化DateTime的默认变量后工作感谢@FredrikRedin我已经添加了我的答案它在初始化DateTime的默认变量后工作
if(DateTime.TryParse(customerRow.UpdatedOn, out record.UpdatedOn) == false)
record.UpdatedOn = null;
DateTime outUpdatedOn = default(DateTime);
if (DateTime.TryParse(customerRow.UpdatedOn, out outUpdatedOn)) record.UpdatedOn = outUpdatedOn; else record.UpdatedOn = null;