2015-11-20 8 views
17

Warum übernimmt .NET, dass aus folgenden verstehen wir Jahr 2015, nicht 1915.DateTime.ParseExact - warum yy in 2015 verwandelt sich nicht 1915

var d = DateTime.ParseExact("20/11/15", "dd/MM/yy", new CultureInfo("en-GB")); 

Ich denke, es Nähe versucht, aber ist es eine vernünftige Design-Entscheidung dahinter?

+6

warum sollte es annehmen 1915 und nicht 2015? ;) –

+2

Der benutzerdefinierte Formatbezeichner ["yy"] (https://msdn.microsoft.com/en-us/library/8kb3ddd4 (v = vs.110) .aspx # yySpecifier) ​​verwendet den ['Calendar.TwoDigitYearMax' Eigenschaft] (https://msdn.microsoft.com/en-us/library/system.globalization.calendar.twodigityearmax (v = vs.110) .aspx). "Der Anfangswert dieser Eigenschaft wird von den Einstellungen in der Systemsteuerung in den Regions- und Sprachoptionen abgeleitet." –

+2

Warum sollte es 1915 und nicht 1815 annehmen? – Martijn

Antwort

13

Es verwendet Calendar.TwoDigitYearMax Eigenschaft.

Diese Eigenschaft ermöglicht die korrekte Übersetzung eines zweistelligen Jahres in ein vierstelliges Jahr. Wenn diese Eigenschaft beispielsweise auf 2029 festgelegt ist, ist der 100-Jahres-Bereich von 1930 bis 2029. Daher wird ein zweistelliger Wert von 30 als 1930 interpretiert, während ein zweistelliger Wert von 29 als 2029 interpretiert wird.

Für en-GB den Wert dieser Eigenschaft ist 2029. Es kann in der Systemsteuerung geändert werden:

der Anfangswert dieser Eigenschaft von den Einstellungen in dem Regions- und Sprachoptionen Teil abgeleitet ist von Schalttafel.

Von MSDN:

In einer Parsing-Operation, eine zweistellige Jahreszahl, die die „yy“ benutzerdefinierte Formatbezeichner analysiert wird unter Verwendung von auf der Calendar.TwoDigitYearMax Eigenschaft des Formatanbieters aktuellen interpretierten Basis Kalender.

+0

Wenn es 2029 wäre Für en-GB würde er 2015 von seiner ParseExact-Operation zurückbekommen. – Powerlord

+0

@Powerlord die OP bekommt 2015, aber er will eigentlich 1915. – user1666620

+0

@ user1666620 War neugierig zu wissen, was war die Grundlage der CLRs Entscheidung zu sagen 2015. – Yahya

27

Dies ist ein System Einstellung, die Sie für Ihren Ort anpassen können, wenn Sie wollen:

enter image description here

+10

Dieser Mauszeiger! Für einen Moment dachte ich, mein Computer wäre eingefroren! –

+1

Es gibt eine verwirrende Mischung von Sprachen! – spender

+4

Ich benutze immer noch ein deutsches Gebietsschema (wenn auch mit Datumsformat ISO 8601), aber Englisch als UI-Sprache. Ich bin daran gewöhnt ;-) – Joey

Verwandte Themen