2016-11-29 15 views
-1

我不能使用以下日期時間減法方法。我不能使用日期時間減法方法

https://msdn.microsoft.com/ja-jp/library/system.datetime.subtract(v=vs.110).aspx

我使用Microsoft Visual Studio 2013業餘體校和VisualBasic2013和.NetFrameWork版本4.5.50938

我想用上面的方法。我可以使用像這樣的Add方法:

Dim dt As Datetime = Nothing 
dt.Add(New TimeSpan(1)) 

我想知道爲什麼雖然有主頁是Datetime。 減法,我不能用加減法......

+3

顯示您嘗試過的代碼並解釋問題 –

+0

請添加您的代碼並將其放在[代碼]標籤之間,在格式幫助中進行說明。並告訴我們到底發生了什麼,以及你預期會發生什麼。 – DrDonut

+0

感謝您的回覆。 對不起,我自己解決了這個問題。 –

回答

5

讓我們看看會發生什麼,當你嘗試創建一個DateTime爲虛無

Dim dt As DateTime = Nothing 
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss.fffffff")) 

我們得到「0001-01-01 00 :00:00.0000000" 。這是可以用DateTime表示的最早日期時間。它不能保持Nothing的「值」,因爲它是值類型:Why is null not allowed for DateTime in C#?

讓我們試着加1點:

dt.Add(New TimeSpan(1)) 
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss.fffffff")) 

哦!我們再次獲得「0001-01-01 00:00:00.0000000」。滴答聲未添加。這是因爲Add方法返回一個新的DateTime - 它不影響Add被調用的方法。

讓我們再試一次:

dt = dt.Add(New TimeSpan(1)) 
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss.fffffff")) 

現在,我們得到 「0001-01-01 00:00:00.0000001」,如預期。

如果我們嘗試早於第一個允許的DateTime,會發生什麼情況?

Dim dt As DateTime = Nothing 
dt = dt.Subtract(New TimeSpan(1)) 

它引發System.ArgumentOutOfRangeException。

+0

只是個頭:有些用戶可能會發現這個答案的語氣有點過於輕率。就我個人而言,它沒有什麼問題,但其他人似乎有不同的看法。 – deceze