2015-11-20 4 views
17

2015にない変わるのはなぜ.NET、私は推測する、それが近接をしようとしますが、そこには合理的である以下から我々がない1915DateTime.ParseExact - なぜyyは1915

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

、2015として年を意味することを前提としていませんそれの後ろにデザインの決定?

+6

を、それは1915年ではなく2015年を想定する必要があり、なぜ? ;) –

+2

["yy"カスタムフォーマット指定子](https://msdn.microsoft.com/en-us/library/8kb3ddd4(v = vs.110).aspx#yySpecifier)は、['Calendar.TwoDigitYearMax'プロパティ](https://msdn.microsoft.com/en-us/library/system.globalization.calendar.twodigityearmax(v = vs.110).aspx)を参照してください。 "このプロパティの初期値は、コントロールパネルの地域と言語のオプション部分の設定に基づいています。" –

+2

なぜ1815年ではなく1915年になるだろうか? – Martijn

答えて

13

Calendar.TwoDigitYearMaxプロパティを使用します。

このプロパティを使用すると、2桁の年を4桁の年に正しく変換できます。たとえば、このプロパティが2029に設定されている場合、100年の範囲は1930〜2029です。したがって、2桁の値30は1930と解釈され、29の2桁の値は2029として解釈されます。

エンGBこのプロパティの値は、それはコントロールパネルで変更することができます2029ある場合:このプロパティの初期値はの地域と言語のオプション部分の設定から派生し

コントロールパネル。 MSDNから

:解析操作で

、「YY」のカスタム書式指定子を使用して解析された2桁の年をフォーマットプロバイダの現在のCalendar.TwoDigitYearMax特性に基づいて解釈されますカレンダー。

+0

それは2029 en-GBの場合、彼はParseExact操作から2015年に戻ります。 – Powerlord

+0

@Powerlord OPは2015年になっていますが、実際には1915年を望んでいます。 – user1666620

+0

@ user1666620 CL​​Rが2015年を決定する根拠を知りたいと思っていました。 – Yahya

27

これは、あなたがしたい場合は、あなたのロケールのためにカスタマイズできるシステム設定です:

enter image description here

+10

そのマウスポインタ!一瞬私は自分のコンピュータがフリーズしたと思った! –

+1

言語の混乱があります。 – spender

+4

私はまだドイツ語のロケール(ISO 8601の日付フォーマットですが)を使用しますが、英語はUI言語として使用します。私はそれに慣れています;-) – Joey

関連する問題