У меня возникла проблема с датой, прошедшей с веб-службы третьей стороны..NET Использование локальных часовых поясов
Поле даты (visitDate), исходящее из службы, относится к типу даты. Ниже приводится то, что находится в WSDL.
<xs:element minOccurs="0" name="visitDate" type="xs:dateTime"/>
После добавления ссылки на службу с использованием .NET, ссылка на файл свойство для visitDate и это тип DateTime. Таким образом, значение, возвращаемое из свойства visitDate, переводится в локальный часовой пояс.
Служба всегда возвращает часть времени как полночь + 2 («2015-04-14T00: 00: 00 + 02: 00»), .NET переводит дату на предыдущую дату, например: «2015-04- 13 23:00:00 ". Из-за этого в моем отчете всегда отображается неправильная дата (день за днем).
Ребята, которые выполнили эту услугу, говорят либо visitDate.AddDays (1), либо используют метод AfterReceiveReply инспектора сообщений, который выполняет строковое манипулирование, чтобы отменить часть часового пояса и пересчитать дату.
Мне просто интересно, есть ли у кого-нибудь подобная проблема, и, надеюсь, может пролить свет на решение, пожалуйста?
Update
Просто, чтобы объяснить это немного больше: visitdate, что возвращается из сервиса является дата, которая добавляется в предыдущей транзакции через экран ввода. При возврате сервиса visitdate всегда заменяйте элемент времени «00:00:00», поэтому вы видите дату «2015-04-14T00: 00: 00 + 02: 00».
Ниже то, что происходит (на основе текущей даты)
Входное значение: 17/04/2015 11:52:39
возвращение Услуги: 2015-04-17 T00: 00: 00 + 02: 00
.Net parse as: 2015-04-16 23:00:00
Дата, которую я хочу показать в своем отчете, - «2015/04/17», а не «2015/04/16».
Update Мы подняли это с командой третьей стороной, и вот что они рекомендуют
Если значение в XML является «2015-04-14T00: 00: 00 + 2: 00» и разобранное значение '2015-04-13 23:00:00': Что-то вроде: visitDate.AddDays (1) .Date даст вам: 2015-04-14 00:00:00
Если WCF является (более сложное) решение состоит в том, чтобы добавить код к методу AfterReceiveReply инспектору сообщений, который выполняет строковое манипулирование, чтобы отключить часть часового пояса.
Что вы подразумеваете под _.NET, переводит дату на предыдущую дату_ точно? Это возвращаемое значение службы является 'string' или' DateTime'? Как вы точно справляетесь с этим возвращаемым значением? Нам нужна дополнительная информация о вашей проблеме. –
Привет, я уточнил вопрос более подробно. – Nadun