Проблема с форматом Datetime: строка не была распознана как допустимая DateTime
Я хочу отформатировать входную строку в ММ/ДД/гггг чч:мм:СС формат в C#.
Входная строка находится в формате MM/dd/yyyy hh:mm:ss
Например :"04/30/2013 23:00"
пробовал Convert.ToDateTime()
функция, но она рассматривает 4 как дату и 3 как месяц, что не то, что я хочу. На самом деле месяц-04 и дата 03.
пробовал DateTime.ParseExact()
функция также, но получение исключения.
Я получаю ошибку:
строка не была распознана как допустимое время DateTime.
6 ответов
строка времени даты не содержит секунд. Вы должны отразить это в своем формате (удалите :ss
).
Также необходимо указать H
вместо h
Если вы используете 24-часовой раз:
DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)
см. здесь для получения дополнительной информации:
можно использовать DateTime.ParseExact()
метод.
преобразует заданное строковое представление даты и времени в его Эквивалент DateTime с использованием указанного формата и культуры сведения о форматировании. формат строкового представления должен полностью соответствовать указанный формат точно.
DateTime date = DateTime.ParseExact("04/30/2013 23:00",
"MM/dd/yyyy HH:mm",
CultureInfo.InvariantCulture);
здесь DEMO
.
hh
для 12-часовых часов с 01 до 12,HH
is для 24-часовых часов с 00 до 23.
для получения дополнительной информации, проверить Custom Date and Time Format Strings
попробуйте это:
string strTime = "04/30/2013 23:00";
DateTime dtTime;
if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out dtTime))
{
Console.WriteLine(dtTime);
}
измените культуру и попробуйте, как это может сработать для вас
string[] formats= { "MM/dd/yyyy HH:mm" }
var dateTime = DateTime.ParseExact("04/30/2013 23:00",
formats, new CultureInfo("en-US"), DateTimeStyles.None);
Проверьте детали:DateTime.Parseexact Метод (Строка, String[], Объекта Iformatprovider, DateTimeStyles)
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
обратите внимание на использование HH (24-часовые часы), а не hh (12-часовые часы), и использование инвариантной культуры, потому что некоторые культуры используют сепараторы, отличные от косой черты.
например, если культура de-DE, формат "dd/MM / yyyy" будет ожидать период в качестве разделителя (31.01.2011).
ниже код работал для меня:
string _stDate = Convert.ToDateTime(DateTime.Today.AddMonths(-12)).ToString("MM/dd/yyyy");
String format ="MM/dd/yyyy";
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
DateTime _Startdate = DateTime.ParseExact(_stDate, format, culture);