Почему эта строка не будет преобразована в DateTime? - PullRequest
0 голосов
/ 07 марта 2012

2/22/2012 3: 30: 00

Конечно, это приемлемый формат для преобразования в DateTime с использованием Convert.ToDateTime ()?

Ответы [ 6 ]

9 голосов
/ 07 марта 2012

Я бы лично не использовал Convert.ToDateTime. Я обычно предпочитаю 1 использовать DateTime.TryParseExact, указав ожидаемую строку культуры и формата - при условии, что имеет ожидаемый формат, конечно. Если вы этого не сделаете, вы должны задать себе большие вопросы.

Например:

DateTime value;
if (DateTime.TryParseExact(text, "M/d/yyyy H:mm:ss",
                           CultureInfo.InvariantCulture,
                           DateTimeStyles.None,
                           out value))
{
    Console.WriteLine("Parsed to {0}", value);
}
else
{
    Console.WriteLine("Failed to parse");
}

Это немного странный формат для начала - обычно 24-часовой формат будет включать ведущий 0 для часа, а 12-часовой формат будет включать обозначение am / pm.


1 Ну, я предпочитаю использовать Время Нода , но это другое дело ...

4 голосов
/ 07 марта 2012

Конечно, это приемлемый формат для преобразования в DateTime с использованием Convert.ToDateTime ()?

Конечно, нет.Это было бы верно для некоторых локалей, но, например, у меня есть fr-FR локаль, и это недопустимая дата.В году нет 22 месяцев.Убедитесь, что вы указали формат при разборе даты.Для этого вы можете использовать метод TryParseExact .

1 голос
/ 07 марта 2012

Если бы вы получили информацию о году, месяце и т. Д. Отдельно как целые числа, я бы лучше использовал конструктор DateTime.

DateTime myDateTime  = new DateTime(year, month, day, hour, minute, second);

Обычно с этим ничего не может пойти не так ...

0 голосов
/ 07 марта 2012

Это прекрасно работает для меня:

            DateTime dt = Convert.ToDateTime("2/22/2012 3:30:00");
        Console.WriteLine(dt.ToShortDateString());
        Console.WriteLine(dt.ToShortTimeString());

Конечно, я не обращаю внимания на локализацию, как предлагает Дарин

0 голосов
/ 07 марта 2012

Вот пример того, как использовать Convert.ToDateTime (), который поможет вам понять это:
Пример Convert.ToDateTime

Или Вы можете попробовать, следуя этомупример:
Преобразовать строку в DateTime

0 голосов
/ 07 марта 2012

Это должно быть в состоянии, если вы предоставите IFormatProvider, который определяет культуру (например, en-US в этом случае).

var date = Convert.ToDateTime("2/22/2012 3:30:00", CultureInfo.GetCultureInfo("en-US"));
...