Попробуйте использовать DateTime.Parse вместо этого.
var dt = DateTime.Parse(date);
Я также рекомендовал бы, что вы разбираете дату, используя DateTime.TryParse, чтобы убедиться, что дата всегда в правильном формате.
DateTime result;
if (DateTime.TryParse(date, out result))
{
Console.WriteLine(result.ToString("dd"));
Console.WriteLine(result.ToString("MMMM"));
Console.WriteLine(result.ToString("yyyy"));
}
else
{
Console.WriteLine("Error parsing date.");
}
Если вы по-прежнему возникают проблемы, возможно, потребуется предоставить DateTime с CultureInfo. Это позволяет указать точную культуру, используемую анализатором, чтобы гарантировать, что настройки области компьютера не вызовут никаких проблем.
DateTime.Parse(date, new CultureInfo("en-US")); // Specific culture
DateTime.Parse(date, CultureInfo.InvariantCulture); // Culture-insensitive
// Culture-insensitive TryParse
if (DateTime.TryParse(date, out result, CultureInfo.InvariantCulture))
{...}
Обычная дата-время использует культуру, установленную вашей операционной системой.
У меня нет исключений при запуске этого кода, и он работает так, как ожидалось. В какой стране вы находитесь? –
У него, вероятно, разные настройки культуры на его ОС, которые представляют даты по-разному. Convert использует их и не анализирует. – alex
, когда у вас есть ошибка? этот же код работал для меня? попробуйте сделать заявление об отладке один раз. –