Как разобрать XML-строку datetime, игнорируя любую информацию о часовом поясе?
Я обновляю приложение, которое читает из XML-файла с помощью System.Xml.XmlReader и должно прочитать значение, которое является Xml-датой-временем, и сгенерировать строковое представление этого значения как местное время, без информации о часовом поясе.
Предыдущий код просто разделил строку значения атрибута на фиксированные позиции,а затем заново построил строку со строкой.Формат(). Я подумал, что это немного хрупко (и очень некрасиво).
Я изменил его на:
DateTime runDate = reader.ReadElementContentAsDateTime(); string output = runDate.ToString("MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
В моей системе (US PDT) это казалось работать отлично:
Строка даты и времени xml: 2015-02-24T10:21:42.3414491-08:00
Отдал обратно: 24.02.2015 10: 21:42
Однако: Это не unit-тесты когда они запускаются на сервере сборки интеграции, потому что этот сервер находится в разные часовые пояса.
Итак, есть ли способ разобрать строку в локальное DateTime, игнорируя часовой пояс, предпочтительно без манипуляций со строками.
Я знаю, что мог бы использовать регулярное выражение, но просто кажется неправильным не использовать DateTime в качестве промежуточной формы для данных, которые является время свидания.
---
Это довольно неприятно, потому что решение ReadElementContentAsDateTime выполнять работу в обычном случае преобразование xml происходит сразу после его генерации, в той же системе. Это просто модульные тесты сервера сборки, которые терпят неудачу.
Что я уже пробовал:
Я попробовал ReadElementContentAsString, а затем использовать XmlConvert.ToDateTime с различными значениями XmlDateTimeSerializationMode.
Не повезло.
Там просто не кажется, что есть способ разобрать игнорирующий информация о часовом поясе.