2016-09-27 17 views
0

我從TimeSpan類收到的數據庫中獲取時間。爲了顯示爲Am/PM,我將它切換到DateTime從Nullable TimeSpan獲取Am/PM值

@string.Format("{0:hh:mm:ss tt}", new DateTime().Add(t.BegTime)) 

這有效。

只要我將TimeSpan更改爲允許空即停止工作。爲什麼?我該如何解決這個問題?

回答

1

的Try ...

@string.Format("{0:hh:mm:ss tt}", new DateTime().Add(t.BegTime.HasValue ? t.BegTime.Value : new TimeSpan(0, 0, 0))); 

這個答案還假定t.BegTime是可空時間跨度

+0

爲什麼當我這樣做時NULL值顯示爲12AM? –

+0

這就是TimeSpan(0,0,0)。如果你想要一個空的DateTime來產生別的東西,你只需要用你想要的替換TimeSpan(0,0,0)。 – Kevin

+0

問題是,你不能在空值上使用string.Format,所以你需要檢測空值並提供一個合適的值來格式化。 – Kevin

0

嘗試......

@string.Format("{0:hh:mm:ss tt}", new DateTime().Add(t.BegTime.Value)) 

可空類型有一個 「Value」 屬性。有關更多信息,請參閱https://msdn.microsoft.com/en-us/library/ydkbatt6(v=vs.110).aspx

編輯:正如伊戈爾指出的,如果BegTime爲空,此代碼將失敗。您仍然有責任用警誡聲明來檢查這種可能性。

+0

真的,我不應該承擔的OP知道。我會編輯。 – dazedandconfused

+1

我假設BegTime是可以爲空的時間跨度,t是一些其他結構(強類型行或類似行爲),因爲TimeSpan沒有BegTime屬性。也許OP可以澄清。 – dazedandconfused

+0

正確!謝謝! –