DateTimeFormatInfo.InvariantInfo vs CultureInfo.InvariantCulture - PullRequest
7 голосов
/ 08 октября 2009

Я пытаюсь проанализировать DateTime, точный формат принимается из клиентского ввода.

Какой из них лучше

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);

Конечно, этот код находится внутри общего статического метода, который вызывается везде, где требуется анализ даты.

Ответы [ 2 ]

8 голосов
/ 08 октября 2009

Если вы посмотрите на подпись для DateTime.TryParseExact, в качестве третьего аргумента будет принят IFormatProvider . И DateTimeFormatInfo.InvariantInfo, и CultureInfo.InvariantCulture реализуют этот интерфейс, так что вы фактически вызываете один и тот же метод для DateTime в обоих случаях.

Внутренне, если вы используете CultureInfo.InvariantCulture, его свойство DateTimeFormat вызывается для получения экземпляра DateTimeFormatInfo. Если вы используете DateTimeFormatInfo.InvariantInfo, это используется напрямую. Вызов DateTimeFormatInfo будет немного быстрее, поскольку он должен выполнять меньше инструкций, но это будет настолько незначительным, что не будет иметь значения в (почти) всех случаях.

Основное различие между этими двумя подходами заключается в синтаксисе. Используйте тот, который вы найдете наиболее ясным.

3 голосов
/ 08 октября 2009

Они дадут одинаковые результаты.
И очень маловероятно, что будет какая-либо разница в производительности.

Так что используйте то, что вы считаете наиболее читабельным. Мой выбор будет DateTimeFormatInfo.InvariantInfo за то, что я немного ближе к делу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...