2011-02-23 87 views
0

我有一些結果集存儲在DateTime變量中。如果值爲空,我想將var設置爲字符串「Still logged in」。c#DateTime轉換爲字符串

我試過一些toString()的東西,但沒有運氣呢。

這是不起作用的代碼。 queryResult.Egresstime是DateTime類型,不能是字符串。

if (Convert.IsDBNull(rdr["timeOut"])) 
       { 
        queryResult.Egresstime = "Still logged in"; 
       } 

回答

2

這似乎是一個設計上的缺陷,但如果你絕對必須保持這樣,你可以將它設置爲一個精確的日期,可以在過去很遠,並檢查呈現日期呈現「仍然登錄」之前,如果它是特定日期。這是設計事物的可怕方法!

+0

這正是我所做的,容易被發現於1111年1月1日 – rd42 2011-02-23 18:57:00

+0

我同意,不好的設計,但我在過去做到了這一點。我們通常會盡可能使用數據庫並給出特殊含義。 – Justin 2011-02-23 19:13:49

0

你的運氣在這裏 - 你不能一個字符串賦值給DateTime類型的屬性。它根本不會那樣工作。

0

您不能將字符串分配給DateTime。

也許你需要有另一個字段指示時間是否有效,如果沒有,請顯示「Still logged in」文本?

如果您能夠將EgressTime更改爲可爲空的DateTime(DateTime?),則可以使用null來指示該值不存在。

0

你不能在Datetime中存儲一個字符串! 但你可以做到這一點

Datetime? Egresstime ; 

DateTime timeOut; 
if(!DateTime.TryParse(rdr["timeOut"], out timeOut)) 
{ 
    Egresstime = null; 
} 
If(Egresstime ==null) 
{ 
//print still logged in 
} 
0

您也許能夠使它的object,而不是一個DateTime

我會做的是使Egresstime爲空的DateTime(DateTime?)並將其設置爲null

if (Convert.IsDBNull(rdr["timeOut"])) 
{ 
    queryResult.Egresstime = null; 
} 

然後就在我輸出到我的報告/用戶界面/無論什麼,然後檢查爲空。

Egresstime.Text = queryResult.Egresstime == null ? "Still logged in" : Egresstime.ToString();