我有一个来自数据库的字符串,但我不确定那将是一个有效的dateTime。安全地将字符串转换为DateTime
首先我正尝试验证,如果it's空,
那么如果不为空我想安全地将其转换为DateTime,因为我不确定这行[“一”]。的ToString会是一个有效的日期时间
output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : "something to convert here";
有没有人有任何想法?
我有一个来自数据库的字符串,但我不确定那将是一个有效的dateTime。安全地将字符串转换为DateTime
首先我正尝试验证,如果it's空,
那么如果不为空我想安全地将其转换为DateTime,因为我不确定这行[“一”]。的ToString会是一个有效的日期时间
output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : "something to convert here";
有没有人有任何想法?
您可以使用DateTime.TryParse
:
output.limitExpiryDate = DateTime.Now;
DateTime limitExpiryDate;
if(row["a"] != DBNull.Value && DateTime.TryParse(row.Field<string>("a"), out limitExpiryDate))
output.limitExpiryDate = limitExpiryDate;
这是一个可空DateTime
列,您可以使用Field
method支持可空类型:
DateTime? limitExpiryDate = row.Field<DateTime?>("a");
if(limitExpiryDate.HasValue)
output.limitExpiryDate = limitExpiryDate.Value;
CultureInfo provider = CultureInfo.InvariantCulture;
var format = "yyyy-MM-dd";
output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : DateTime.ParseExact(row["a"], format, provider);
事情是这样的:
DateTime date = DateTime.Now;
if (row["a"] != null && row["a"] != DBNull.Value)
{
if (!DateTime.TryParse(row["a"], out date))
date = DateTime.Now;
}
output.limitExpiryDate = date;
或者您可以使用TryParseExact
并指定格式,如果您知道您的row["a"]
具有的日期时间格式。