powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Web service - DateTime и Time zone
9 сообщений из 9, страница 1 из 1
Web service - DateTime и Time zone
    #38063291
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть веб сервис, у которого один из параметров метода имеет тип DateTime.
Если мы дергаем этот метод и передаем значение в соап запросе вида
Код: xml
1.
<tem:dateTo>2012-11-29T19:00:00Z</tem:dateTo>


то сервер справедливо полагает что это дата время в формате UTC.
Но если в соап запросе нет этой самой буковки Z:
Код: xml
1.
<tem:dateTo>2012-11-29T19:00:00</tem:dateTo>


То сервер будет думать что это дата/время в его серверной таймзоне.

Вопрос - можно ли как-то заставить сервер считать что если буквы Z нет, то это тоже UTC дата/время? Что-то типа задания таймзоны по умолчанию, которая используется, если юзер явно ее не указал?
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38063413
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервер заставить? Наверн можно часы перевести, вообще нужно читать DateTime.Parse , ну или просто добавляй Z, если ее нет :)
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38064088
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часы переводить не вариант по понятным причинам - серверов несколько в разных таймзонах и на это много всего завязано.

Про DateTime.Parse - всё бы хорошо, но параметр веб метода - уже готовая распарсенная дата, и как подсунуть туда другой Parse непонятно.
SanSYSну или просто добавляй Z, если ее нет :)
Я вижу только один способ это сделать - отредактировать реквест в HttpModule. Но уж больно некрасиво это выглядит. Может есть какое-нибудь решение получше?
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38064208
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton.Я вижу только один способ это сделать - отредактировать реквест в HttpModule. Но уж больно некрасиво это выглядит. Может есть какое-нибудь решение получше?

Если вы получаете параметр уже в формате DateTime, то посмотрите его свойства. Например там есть свойство Kind, может еще что-нибудь найдете.
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38064307
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarlexAnton.Я вижу только один способ это сделать - отредактировать реквест в HttpModule. Но уж больно некрасиво это выглядит. Может есть какое-нибудь решение получше?

Если вы получаете параметр уже в формате DateTime, то посмотрите его свойства. Например там есть свойство Kind, может еще что-нибудь найдете.
+1
также никто не мешает принимать строку и ее уже парсить как угодно :)
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38064648
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarlexЕсли вы получаете параметр уже в формате DateTime, то посмотрите его свойства. Например там есть свойство Kind, может еще что-нибудь найдете.
Супер! Я был уверен что там после десериализации стоит local, и потому даже не смотрел в эту сторону. Но это не так! Если таймзона в соап-запросе явно не указана, туда будет проставлено unspecified! То что надо!
Было вдвойне приятно это обнаружить уже после того как я смирился с тем что придется писать свой SoapExtension и там модифицировать запрос.
Спасибо за подсказку!

SanSYS, Принимать строку мешают куча клиентов, которые уже используют сервис, т.е. менять интерфейс нельзя. Да и неправильно это - в строке дату передавать.
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38065258
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton.Вопрос - можно ли как-то заставить сервер считать что если буквы Z нет, то это тоже UTC дата/время? Что-то типа задания таймзоны по умолчанию, которая используется, если юзер явно ее не указал?
Вообще по умолчанию ничего не надо указывать, если ты тип DateTime пихаешь через SOAP, он автоматом сконвертится в UTC. Вывод - у тебя дата передается строчкой, что есть зло.
Итого: передавай данные в нужном формате, на сервер ты никак не повлияешь.
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38065681
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВывод - у тебя дата передается строчкой, что есть зло.А как ещё она может передаваться? :)
Судя по формату, в wsdl мы увидим:
Код: xml
1.
<s:element name="dateTo" type="s:dateTime"/>
...
Рейтинг: 0 / 0
Web service - DateTime и Time zone
    #38065693
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУВывод - у тебя дата передается строчкой, что есть зло.А как ещё она может передаваться? :)
Судя по формату, в wsdl мы увидим:
Код: xml
1.
<s:element name="dateTo" type="s:dateTime"/>


Речь о типизированной или строковой передаче агрумента через веб метод.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Web service - DateTime и Time zone
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]