2016-11-29 7 views
-1

Ich kann die folgende Datetime-Subtraktionsmethode nicht verwenden.Ich kann die Datetime-Subtraktionsmethode nicht verwenden

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

Ich verwende Microsoft Visual Studio 2013 Proffesional und VisualBasic2013 und .NETFramework Version 4.5.50938

ich oben Methode verwenden möchten. Ich kann Add-Methode wie folgt verwenden:

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

Ich möchte wissen, warum, obwohl es die Homepage ist, die Datetime ist. subtrahieren, kann ich nicht verwenden, subtrahieren Methode ......

+3

Zeigen Sie den Code an, den Sie versucht haben, und erläutern Sie das Problem –

+0

Fügen Sie Ihren Code hinzu und fügen Sie ihn zwischen [code] -Tags ein, wie in der Formatierungshilfe erläutert. Erzählen Sie uns genau, was passiert ist und was Sie erwartet haben. – DrDonut

+0

danke für die Antwort. Und Entschuldigung, ich habe das Problem selbst gelöst. –

Antwort

5

Mal sehen, was passiert, wenn Sie versuchen, eine Datetime als nichts zu schaffen:

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

wir bekommen „0001-01-01 00 : 00: 00.0000000 ". Dies ist das früheste Datetime, das von einer DateTime dargestellt werden kann. Es kann keinen "Wert" von Nothing enthalten, da es sich um einen Werttyp handelt: Why is null not allowed for DateTime in C#?.

Lasst uns versuchen Sie, 1 tick:

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

Oh! Wir erhalten wieder "0001-01-01 00: 00: 00.0000000". Das Häkchen wurde nicht hinzugefügt. Das liegt daran, dass die Methode Add eine neue DateTime zurückgibt - sie hat keinen Einfluss auf die Datei, für die Add aufgerufen wurde.

ist wieder Lassen Sie versuchen:

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

Nun kommen wir "0001-01-01 00: 00: 00,0000001", wie beabsichtigt.

Was passiert, wenn wir versuchen, früher als die erste zulässige DateTime zu gehen?

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

Es löst eine System.ArgumentOutOfRangeException aus.

+0

Nur ein Kopf hoch: einige Benutzer finden den Ton dieser Antwort ein bisschen zu frivol. Persönlich habe ich wenig Problem damit, aber andere scheinen anders zu denken. – deceze

Verwandte Themen