Метод XmlSerializer.Deserialize добавляет часовой пояс к полю времени и даты и времени. - PullRequest
0 голосов
/ 31 марта 2010

Наличие небольшого скрипта в Microsoft.NET 2.0, который десериализует XML обратно к типизированному объекту, подключает его к веб-службе с использованием ServiceDescription и связывает десериализованный типизированный объект с входящим WebMethod. XML до сериализации выглядит следующим образом

<completion_time>12:19:38</completion_time> 

при подключении к веб-сервису выглядит следующим образом

<completion_time>12:19:38.0000000-04:00</completion_time>

с добавлением часового пояса к концу. Это приводит к тому, что время будет считываться по-разному при взаимодействии с веб-службой в другом часовом поясе. есть ли способ позволить XmlSerializer пропускать часовой пояс? Или какие-либо другие известные обходные пути?

Ответы [ 3 ]

1 голос
/ 11 мая 2011

столкнулся с той же проблемой. Наконец нашел свойство DateTimeMode в объекте DataColumn. Он принимает член перечисления DataSetDateTime , который управляет сериализацией времени. Если установить значение Unspecified, сериализатор не сможет конвертировать время.

Вы можете перебрать существующий DataSet и установить режим следующим образом:

        foreach (DataColumn column in table.Columns) {
            if (column.DataType == typeof(DateTime)) {
                column.DateTimeMode = DataSetDateTime.Unspecified;
            }   
        }
0 голосов
/ 31 марта 2010

http://blogs.msdn.com/brada/archive/2004/04/13/112784.aspx

[XmlElementAttribute(DataType="date")]

public DateTime date;

или

[XmlAttributeAttribute(DataType="date")]

public DateTime date;
0 голосов
/ 31 марта 2010

Вы можете изменить тип поля'ning_time 'с DateTime на string и использовать формат datetime для получения строки datetime без часового пояса

DateTime date = DateTime.UtcNow; Date.toString ( "чч: мм: сс");

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