Анализ точных дат в C # не должен заставлять вас создавать IFormatProvider

StackOverflow https://stackoverflow.com/questions/64640

Вопрос

Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь, но анализ дат в формате гггг / ММ / дд (или других конкретных форматах) на C# следует быть таким же простым, как

DateTime.ParseExact(theDate, "yyyy/MM/dd");

но нет, C # заставляет вас создавать IFormatProvider.

Есть ли удобный способ настройки app.config, чтобы мне не нужно было делать это каждый раз?

DateTime.ParseExact(theDate, "yyyy/MM/dd", new CultureInfo("en-CA", true));
Это было полезно?

Решение

Аргумент IFormatProvider может быть равен null.

Другие советы

ParseExact нуждается в культуре :рассмотрим "гггг МММ дд".MMM - это локализованное название месяца, использующее текущую культуру.

Используйте текущую культуру приложения:

DateTime.ParseExact("2008/12/05", "yyyy/MM/dd", System.Globalization.CultureInfo.CurrentCulture);

Вы можете настроить культуру приложения в app.config, используя тег Globalization.Я думаю.

Создайте метод расширения:

public static DateTime ParseExactDateTime(this string dateString, string formatString) {
    return DateTime.ParseExact(dateString, formatString, new CultureInfo("en-CA", true));
}

Для определения конкретных символов и строк даты и времени (например, названий дней недели на определенном языке) требуется поставщик формата.Вы можете использовать значение null, и в этом случае используется объект CultureInfo, соответствующий текущему языку.

Если вы не хотите указывать это каждый раз, создайте метод расширения, который либо передает null, либо CultureInfo ("en-CA", true) в качестве поставщика формата.

Вы также можете просто создать IFormatProvider один раз и сохранить его для последующего использования.

Вы также могли бы использовать класс Convert

Convert.ToDateTime("2008/11/25");

//Преобразовать дату в формат, совместимый с MySQL

DateTime Значение даты = Преобразовать.Текущее время (datetimepicker.text);

строка datevalue = значение даты.toString("гггг-ММ-дд");

Что плохого в использовании Globalization.CultureInfo.InvariantCulture ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top