-6
擴展方法爲什麼DateTime.TryParse會將我的號碼變成日期?
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。它不應該這樣做。我不確定它爲什麼這樣做。
因爲它落到了'else'併成功試圖解析它!?它做了你所問的。如果你的解析方法有問題,你需要重新考慮使用'TryParse'或你之前的條件。 – 2014-10-17 15:06:29
這是猜測你有一個'yyyy.MM.'格式,我懷疑。你爲什麼要轉換成一個字符串,然後解析呢?鑄造將是一個更好的主意......因爲它可以避免將所有東西都變成一個字符串... – 2014-10-17 15:06:41
您的數據轉換非常狂野。我不驚訝你看到這樣的效果。你最好不要使用這樣的通用轉換邏輯。你的代碼應該知道預期的類型。 – usr 2014-10-17 15:06:50