我有一个来自数据库的字符串,但我不确定它是否是一个有效的dateTime。
首先我试图验证它是否为空,
然后如果不为null我想安全地将它转换为DateTime,因为我不确定行[“a”]。ToString将是一个有效的DateTime
output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : "something to convert here";
有没有人有任何想法?
答案 0 :(得分:3)
您可以使用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;
答案 1 :(得分:0)
CultureInfo provider = CultureInfo.InvariantCulture;
var format = "yyyy-MM-dd";
output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : DateTime.ParseExact(row["a"], format, provider);
答案 2 :(得分:0)
这样的事情:
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"]
的日期时间格式。