почему я получаю эту ошибку System.FormatException: «Строка не была распознана как допустимый DateTime.»? - PullRequest
0 голосов
/ 24 мая 2019

Подскажите, как исправить ошибку.

Я пытаюсь преобразовать строку в правильный формат, но у меня это не работает.

Text = "9/21/2004"

 DateTime d1 = DateTime.ParseExact(text.ToString(), "MM/dd/yyyy", null);
 return (T)Convert.ChangeType(text, underlyingType);

Полный метод:

public static T To<T>(this object text)
        {
            if (text == null) return default(T);
            if (text.Equals(DBNull.Value)) return default(T);
            if (text is string) if (string.IsNullOrWhiteSpace(text as string)) return default(T);

            var type = typeof(T);
            if(type.ToString() == "QuantLib.Date")
            {
                var dt = (DateTime)text;
                QuantLib.Date date = new QuantLib.Date((int)dt.ToOADate());
                return (T)Convert.ChangeType(date, type);
            }

            var underlyingType = Nullable.GetUnderlyingType(type) ?? type;

            DateTime d1 = DateTime.ParseExact(text.ToString(), "dd/MM/yyyy", null);
            return (T)Convert.ChangeType(d1, underlyingType);
        }

        public static T ToDatetime<T>(this QuantLib.Date date)
        {
            DateTime dt = Convert.ToDateTime(date.month() + " " + date.dayOfMonth().ToString() + ", " + date.year().ToString());
            var type = typeof(T);
            if (type == typeof(string))
                return (T)Convert.ChangeType(dt.ToShortDateString(), typeof(T));
            else
                return (T)Convert.ChangeType(dt, typeof(T));
        }

1 Ответ

0 голосов
/ 24 мая 2019

MM/dd/yyyy не является правильным форматом для "21.09.2004", M/dd/yyyy - это, поскольку вы даете только одну цифру для месяца ( M ), который предшествует дням ( дд ).Я бы посоветовал вам взглянуть на официальную документацию , предоставленную @elgonzo в комментариях.M/dd/yyyy по-прежнему работает, если вы используете две цифры для месяцев, как в "21.12.2004".

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