扩展方法
public static class DBNullExt
{
public static string DBNToString(this object value)
{
if (value == System.DBNull.Value)
return null;
else
{
string val = value.ToString();
DateTime test;
if (DateTime.TryParse(val, out test))
return test.ToShortDateString();
else
return val;
}
}
}
使用它的地方
using (SqlDataReader rdr = cmd.ExecuteReader())
{
if (rdr.HasRows)
{
while (rdr.Read())
{
dtf.Date1 = rdr["date1"].DBNToString();
dtf.Date2 = rdr["date2"].DBNToString();
dtf.Cash = rdr["cash"].DBNToString();
}
}
}
来自rdr["cash"].DBNToString()
的价值是3685.02。但它不断将数据转换为3685/2/1。它不应该这样做。而且我不确定它为什么这样做。
答案 0 :(得分:0)
public static class DBNullExt
{
public static string DBNToString(this object value)
{
if (value == System.DBNull.Value)
return null;
else
{
string val = value.ToString();
DateTime test;
string format = "MM/dd/yyyy h:mm:ss tt";
if (DateTime.TryParseExact(val, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out test))
return test.ToShortDateString();
else
return val;
}
}
}
作为字符串,3685.02
或2014.10
是允许的DateTime格式。上面的代码只解析遵循指定格式的字符串形式的DateTimes。