2011-01-31 2 views
1

Я определяю схему для моего веб-сервиса, к которому будут доступны из разных стран. Мне интересно , который из нижеследующих 2 должен использоваться (оба действительны в соответствии с xsd dateTime и ISO 8601) и , который один из них соответствует WS-I?UTC или локальное время с смещением зоны для моей схемы?

  1. UTC формат, как 14: 15Z или 14: 15: 00Z. Прилагаемая буква Z указывает, что время представлено в формате UTC.
  2. В качестве альтернативы используйте локальное время с явным обозначением зоны в одном из форматов [+/-] hh: mm. Пример: 12: 15 + 02: 00

ответ

3

Это несколько субъективно - оба в порядке. Я предпочитаю UTC. Вероятно, вам все равно нужно преобразовать время в клиентский локальный (и вы должны полагаться на информацию от клиента, чтобы сделать это, так как пользователь может входить в систему с разных часовых поясов). При хранении в UTC вам нужно меньше беспокоиться о том, как происходит хранение, поскольку все времена представлены в одном и том же часовом поясе, и его гораздо проще сравнивать (и, следовательно, сортировать).

+0

+1 Не могли бы вы рассказать о «хранении в UTC, по крайней мере, более быстрое сравнение двух дат», –

1

Это зависит от варианта использования. Иногда полезно знать часовой пояс, в котором находится клиент. Если пользователь вводит время 13:00 в свой часовой пояс, они, вероятно, все еще хотят увидеть 13:00, когда вы получите дату.

Примечание: Я не говорю, что вы храните время в местном (что было бы очень плохо, конечно), просто чтобы вы могли сохранить часовой пояс.

1

Обе формы объединяются с базовым профилем WS-I, так как они оба являются действительными лексическими форматами для xsd: dateTime.

Обычно описание службы должно указывать xsd: dateTime в схеме и обычно не ограничивает лексический формат. В этом случае реализация службы должна быть подготовлена ​​для обработки любого действительного значения xsd: dateTime, то есть должно быть в состоянии справиться с любой формой в данных, полученных от клиентов.

Если вы действительно хотите, вы можете ограничить разрешенные лексические форматы в схеме для описания вашего сервиса, указав настраиваемый тип на основе xsd: dateTime с дополнительным шаблоном. По-моему, это все равно будет соответствовать стандарту WS-I Basic, но я бы избегал этого, если у вас нет очень веской причины. По моему опыту пользовательские типы, основанные на типах XSD с добавленными фасетками, не всегда хорошо сочетаются со всеми инструментами XML, поэтому вы можете создавать проблемы для клиентов, добавляя дополнительные ограничения за пределы xsd: dateTime.

Смежные вопросы