.net 将字符串安全转换为DateTime

ulydmbyx  于 2022-12-30  发布在  .NET
关注(0)|答案(4)|浏览(205)

我有一个来自数据库的字符串,但我不确定它是否是有效的日期时间。
首先我试图验证它是否为空,
如果不为空,我想安全地将其转换为DateTime,因为我不确定row[“a”].ToString是否为有效的DateTime

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

有人知道吗?

zpqajqem

zpqajqem1#

您可以使用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;
gcmastyq

gcmastyq2#

CultureInfo provider = CultureInfo.InvariantCulture;
  var format = "yyyy-MM-dd";
 output.limitExpiryDate = row["a"] == DBNull.Value ? DateTime.Now : DateTime.ParseExact(row["a"], format, provider);
gg0vcinb

gg0vcinb3#

大概是这样的

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;

或者,如果您知道row["a"]的日期时间格式,则可以使用TryParseExact并指定format。

k10s72fa

k10s72fa4#

你可以用这个。它对任何日期格式都给予。它对我很有效。

public static DateTime? ToDateTime(this string value)
{
    if (string.IsNullOrEmpty(value))
    {
        return null;
    }
    return Convert.ToDateTime(value);
}

相关问题