Как отформатировать параметр даты и времени в URL с часовым поясом - PullRequest
0 голосов
/ 25 октября 2018

Я искал везде и не могу найти ответ.Я хотел бы понять, что происходит с тем, как я форматирую параметр url для даты и времени (с часовым поясом).

Вот ситуация:

  1. Программа-вызывающая программа имеет значение DateTime с UTCчасовой пояс.
  2. Приемник Json WebAPI (C #) работает на моем локальном компьютере с центральным часовым поясом.
  3. PoCreationDate - это тип DateTime (C #).Я не пишу код для разбора значения PoCreationDate.C # преобразовал его в объект DateTime для меня автоматически (через сериализацию?).

Вот тестовые случаи:

Случай 1 : Этот работает

http://******/api/ItemSource/GetItemSourceOption?OrganizationCode=OKC&PoCreationDate=2018-10-08T01:02:03.0000000-05:00

Случай 2 : этот не работает, и браузер отображает

<Error>
    <Message>The request is invalid.</Message>
</Error>

http://******/api/ItemSource/GetItemSourceOption?OrganizationCode=OKC&PoCreationDate=2018-10-08T05:00:00.0000000+00:00

Обратите внимание на другое?один из них имеет -05: 00, другой - +00: 00.Мой часовой пояс является центральным (который сейчас равен -05: 00?)

Случай 3 : Моя текущая работа заключается в том, чтобы отформатировать его таким образом http://******/api/ItemSource/GetItemSourceOption?OrganizationCode=OKC&PoCreationDate=2018-10-08T05:00:00Z

=====================

Так что я просто пытаюсь понять, что здесь происходит, и эти мои мысли ...

Я верю, чтоиспользование формата Z является лучшим решением, поскольку значение DateTime (из источника) всегда в формате UTC.

О -05: 00 и +00: 00, они должны быть установлены в соответствии с получателемчасовой пояс (сервер назначения локальный часовой пояс)?Таким образом, в этом случае мой компьютер является приемником (WebAPI), и для него установлено значение Центрального часового пояса, поэтому это значение должно быть -05: 00, чтобы представлять текущее значение для Центрального часового пояса?

Пожалуйста, помогите мне понятьэтот.Спасибо.

1 Ответ

0 голосов
/ 25 октября 2018

Символ + в смещении интерпретируется как пробел согласно правилам кодирования URL.Вам нужно будет закодировать его так, чтобы он был заменен на %2B.

Обратите внимание, что при этомтакже заменит символы : на %3A, что является необязательным в параметре строки запроса, но все же рекомендуется.

Обычно параметры, передаваемые в строке запроса, необходимо кодировать, если только вы не можете гарантировать, что онине содержат специальных символов.

Кроме того, вы можете спросить себя, действительно ли в этом поле должна быть указана полная дата + время + смещение.Во многих случаях можно ожидать, что поле типа PoCreationDate будет просто дата, как в "2018-10-08".Конечно, это зависит от логики вашего приложения и бизнес-требований.

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