Как я могу превратить эту строку в datetime - PullRequest
0 голосов
/ 04 июня 2018

Я пробовал разные форматы, но ничего не работает.Строка:

2018-06-04T09: 07: 30: 507Z

Я получаю сообщение об ошибке, что строка была в неправильном формате даты и времени со всем, что япытаться.Сначала я обнаружил / подумал, что строка была в формате ISO 8601, но, похоже, это тоже неправильно.

Не думаю, что это должно иметь значение, но я получаю эту строку из XML-ввода, вот код, который я использую для этого (с последним вариантом, который я пытался заставить его работать):

foreach (XmlNode node in parentNode)
            {
                foreach (XmlNode child in node)
                {
                    switch (child.Name)
                    {
                        case "ShopId":
                            advance.ShopId = child.InnerText;
                            break;
                        case "CustomerId":
                            advance.CustomerId = child.InnerText;
                            break;
                        case "Reference":
                            advance.Reference = child.InnerText;
                            break;
                        case "Amount":
                            advance.Amount = decimal.Parse(child.InnerText.Replace('.', ','));
                            break;
                        case "DateStart":
                            advance.DateStart = DateTime.Parse(child.InnerText, null, System.Globalization.DateTimeStyles.RoundtripKind);
                            break;
                        case "DateEnd":
                            advance.DateEnd = DateTime.Parse(child.InnerText);
                            break;
                        default:
                            break;
                    }
                }
            }

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы можете выбрать формат вручную:

DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss:fffZ", CultureInfo.InvariantCulture);

Я думал, что был стандартный шаблон, но Я не могу найти тот, который принимает "Т" в середине здесь какДжухарр отмечает, что входящие данные не в стандартном формате.Так что пользовательский формат должен быть.

0 голосов
/ 04 июня 2018

Поскольку у вас есть строка I, попробуйте самый простой способ:

Длина отдельных разделов, например год (2018 => 4 символа), не меняется,

, поэтому вы можете просторазрезать всю дату на pasrts, используя несколько методов Substring (https://msdn.microsoft.com/pl-pl/library/system.string.substring(v=vs.110).aspx)

Я знаю, это кажется немного глупым, но пока это работает ...

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