Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть веб сервис, у которого один из параметров метода имеет тип DateTime. Если мы дергаем этот метод и передаем значение в соап запросе вида Код: xml 1. то сервер справедливо полагает что это дата время в формате UTC. Но если в соап запросе нет этой самой буковки Z: Код: xml 1. То сервер будет думать что это дата/время в его серверной таймзоне. Вопрос - можно ли как-то заставить сервер считать что если буквы Z нет, то это тоже UTC дата/время? Что-то типа задания таймзоны по умолчанию, которая используется, если юзер явно ее не указал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2012, 19:28 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
Сервер заставить? Наверн можно часы перевести, вообще нужно читать DateTime.Parse , ну или просто добавляй Z, если ее нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2012, 21:10 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
Часы переводить не вариант по понятным причинам - серверов несколько в разных таймзонах и на это много всего завязано. Про DateTime.Parse - всё бы хорошо, но параметр веб метода - уже готовая распарсенная дата, и как подсунуть туда другой Parse непонятно. SanSYSну или просто добавляй Z, если ее нет :) Я вижу только один способ это сделать - отредактировать реквест в HttpModule. Но уж больно некрасиво это выглядит. Может есть какое-нибудь решение получше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 12:21 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
Anton.Я вижу только один способ это сделать - отредактировать реквест в HttpModule. Но уж больно некрасиво это выглядит. Может есть какое-нибудь решение получше? Если вы получаете параметр уже в формате DateTime, то посмотрите его свойства. Например там есть свойство Kind, может еще что-нибудь найдете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 13:15 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
StarlexAnton.Я вижу только один способ это сделать - отредактировать реквест в HttpModule. Но уж больно некрасиво это выглядит. Может есть какое-нибудь решение получше? Если вы получаете параметр уже в формате DateTime, то посмотрите его свойства. Например там есть свойство Kind, может еще что-нибудь найдете. +1 также никто не мешает принимать строку и ее уже парсить как угодно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 14:02 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
StarlexЕсли вы получаете параметр уже в формате DateTime, то посмотрите его свойства. Например там есть свойство Kind, может еще что-нибудь найдете. Супер! Я был уверен что там после десериализации стоит local, и потому даже не смотрел в эту сторону. Но это не так! Если таймзона в соап-запросе явно не указана, туда будет проставлено unspecified! То что надо! Было вдвойне приятно это обнаружить уже после того как я смирился с тем что придется писать свой SoapExtension и там модифицировать запрос. Спасибо за подсказку! SanSYS, Принимать строку мешают куча клиентов, которые уже используют сервис, т.е. менять интерфейс нельзя. Да и неправильно это - в строке дату передавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 16:43 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
Anton.Вопрос - можно ли как-то заставить сервер считать что если буквы Z нет, то это тоже UTC дата/время? Что-то типа задания таймзоны по умолчанию, которая используется, если юзер явно ее не указал? Вообще по умолчанию ничего не надо указывать, если ты тип DateTime пихаешь через SOAP, он автоматом сконвертится в UTC. Вывод - у тебя дата передается строчкой, что есть зло. Итого: передавай данные в нужном формате, на сервер ты никак не повлияешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 23:21 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
МСУВывод - у тебя дата передается строчкой, что есть зло.А как ещё она может передаваться? :) Судя по формату, в wsdl мы увидим: Код: xml 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 10:41 |
|
||
|
Web service - DateTime и Time zone
|
|||
|---|---|---|---|
|
#18+
skyANAМСУВывод - у тебя дата передается строчкой, что есть зло.А как ещё она может передаваться? :) Судя по формату, в wsdl мы увидим: Код: xml 1. Речь о типизированной или строковой передаче агрумента через веб метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 10:46 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38065258&tid=1358986]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 355ms |

| 0 / 0 |
