我從TimeSpan類收到的數據庫中獲取時間。爲了顯示爲Am/PM,我將它切換到DateTime從Nullable TimeSpan獲取Am/PM值
@string.Format("{0:hh:mm:ss tt}", new DateTime().Add(t.BegTime))
這有效。
只要我將TimeSpan更改爲允許空即停止工作。爲什麼?我該如何解決這個問題?
我從TimeSpan類收到的數據庫中獲取時間。爲了顯示爲Am/PM,我將它切換到DateTime從Nullable TimeSpan獲取Am/PM值
@string.Format("{0:hh:mm:ss tt}", new DateTime().Add(t.BegTime))
這有效。
只要我將TimeSpan更改爲允許空即停止工作。爲什麼?我該如何解決這個問題?
的Try ...
@string.Format("{0:hh:mm:ss tt}", new DateTime().Add(t.BegTime.HasValue ? t.BegTime.Value : new TimeSpan(0, 0, 0)));
這個答案還假定t.BegTime是可空時間跨度
嘗試......
@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爲空,此代碼將失敗。您仍然有責任用警誡聲明來檢查這種可能性。
真的,我不應該承擔的OP知道。我會編輯。 – dazedandconfused
我假設BegTime是可以爲空的時間跨度,t是一些其他結構(強類型行或類似行爲),因爲TimeSpan沒有BegTime屬性。也許OP可以澄清。 – dazedandconfused
正確!謝謝! –
爲什麼當我這樣做時NULL值顯示爲12AM? –
這就是TimeSpan(0,0,0)。如果你想要一個空的DateTime來產生別的東西,你只需要用你想要的替換TimeSpan(0,0,0)。 – Kevin
問題是,你不能在空值上使用string.Format,所以你需要檢測空值並提供一個合適的值來格式化。 – Kevin