2015-11-20 12 views
17

Perché .NET per scontato che dal seguire intendiamo anno come il 2015, non 1915.DateTime.ParseExact - perché aa trasforma in 2015, non 1915

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

Credo, cerca di prossimità, ma c'è un ragionevole decisione progettuale dietro di esso?

+6

il motivo per cui dovrebbe assumere 1915 e non 2015? ;) –

+2

Il ["yy" Custom Format Specifier] (https://msdn.microsoft.com/en-us/library/8kb3ddd4 (v = vs.110) .aspx # yySpecifier) ​​utilizza il ['Calendar.TwoDigitYearMax' Proprietà] (https://msdn.microsoft.com/en-us/library/system.globalization.calendar.twodigityearmax (v = vs.110) aspx). "Il valore iniziale di questa proprietà deriva dalle impostazioni nella parte relativa alle opzioni internazionali e della lingua del Pannello di controllo." –

+2

Perché dovrebbe assumere il 1915 e non il 1815? – Martijn

risposta

13

Utilizza la proprietà Calendar.TwoDigitYearMax.

Questa proprietà consente a un anno a 2 cifre di essere correttamente tradotto in un anno a 4 cifre. Ad esempio, se questa proprietà è impostata su 2029, l'intervallo di 100 anni va da 1930 a 2029. Pertanto, un valore a 2 cifre di 30 viene interpretato come 1930, mentre un valore a 2 cifre di 29 viene interpretato come 2029.

Per it-IT il valore di questa proprietà è 2029. si può essere modificato nel pannello di controllo:

il valore iniziale di questa proprietà è derivato dalle impostazioni nella porzione opzioni internazionali e della lingua di Pannello di controllo.

Da MSDN:

In un'operazione di analisi, un anno a due cifre, che viene analizzato utilizzando il "aa" formato personalizzato identificatore viene interpretato in base alla proprietà Calendar.TwoDigitYearMax della corrente del provider di formato calendario.

+0

Se fosse il 2029 per en-GB, quindi tornerebbe il 2015 dall'operazione ParseExact. – Powerlord

+0

@Powerlord l'OP sta per ottenere il 2015, ma in realtà vuole il 1915. – user1666620

+0

@ user1666620 Era curioso di sapere quale fosse la base della decisione CLRs per dire 2015. – Yahya

27

Si tratta di un sistema di regolazione è possibile personalizzare per il vostro locale, se si desidera:

enter image description here

+10

Puntatore del mouse! per un momento ho pensato che il mio computer si fosse congelato! –

+1

C'è una miscela confusa di lingue! – spender

+4

Uso ancora un locale tedesco (anche se con il formato di data ISO 8601), ma l'inglese come lingua dell'interfaccia utente. Ci sono abituato ;-) – Joey

Problemi correlati