2009-10-08 3 views
6

クライアント入力から受け入れられた正確な形式でDateTimeを解析しようとしています。もちろんDateTimeFormatInfo.InvariantInfoとCultureInfo.InvariantCulture

どちらが優れている

bool success = DateTime.TryParseExact(value, "dd-MMM-yyyy", 
    DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dateTime); 

OR

bool success = DateTime.TryParseExact(value, "dd-MMM-yyyy", 
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime); 

、このコードは、日付の解析が必要とされている場所と呼ばれる一般的な静的メソッドの内部です。

答えて

7

DateTime.TryParseExactの署名を見ると、第3引数としてIFormatProviderが必要です。 DateTimeFormatInfo.InvariantInfoCultureInfo.InvariantCultureの両方がこのインターフェイスを実装しているので、どちらの場合も実際にDateTimeで同じメソッドを呼び出しています。

CultureInfo.InvariantCultureを使用すると、そのDateTimeFormatプロパティが呼び出され、DateTimeFormatInfoインスタンスが取得されます。 DateTimeFormatInfo.InvariantInfoを使用すると、これが直接使用されます。 DateTimeFormatInfoコールは少し遅くとなるため、指示を少なくしなければなりませんが、(ほとんど)すべてのケースで差異を生じない程度に限界があります。

2つのアプローチの主な違いは構文です。最も鮮明なものを使用してください。

3

同じ結果が得られます。
パフォーマンス上の違いはほとんどありません。

あなたが最も読めると思われるものを使用してください。私の選択は、ちょっとポイントを上げるためにDateTimeFormatInfo.InvariantInfoになります。

関連する問題