2014-10-10 57 views
0

我有一个来自数据库的字符串,但我不确定那将是一个有效的dateTime。安全地将字符串转换为DateTime

首先我正尝试验证,如果it's空,

那么如果不为空我想安全地将其转换为DateTime,因为我不确定这行[“一”]。的ToString会是一个有效的日期时间

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

有没有人有任何想法?

回答

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; 
0
CultureInfo provider = CultureInfo.InvariantCulture; 
    var format = "yyyy-MM-dd"; 
output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : DateTime.ParseExact(row["a"], format, provider); 
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"]具有的日期时间格式。