将字符串安全地转换为DateTime

时间:2014-10-10 11:07:50

标签: c# .net type-conversion

我有一个来自数据库的字符串,但我不确定它是否是一个有效的dateTime。

首先我试图验证它是否为空,

然后如果不为null我想安全地将它转换为DateTime,因为我不确定行[“a”]。ToString将是一个有效的DateTime

output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : "something to convert here";

有没有人有任何想法?

3 个答案:

答案 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"]的日期时间格式。