ТОЛЬКО часть даты ISO 8601 - PullRequest
1 голос
/ 11 июня 2019

Наш клиент хочет только свидание.Насколько я понимаю, отраслевым стандартом для JSON.NET и Web Api является ISO 8601. Возможно вернуть часть даты ТОЛЬКО из нашего Web Api, придерживаясь стандартов ISO 8601, или использовать свойство date (dateOfBirth) нашего объекта JSON.должны иметь все нули для временной части, чтобы соответствовать стандарту ISO 8601?

1 Ответ

2 голосов
/ 11 июня 2019

ISO 8601 - это стандарт, определяющий многие различные форматы.Раздел 4.1.2 охватывает даты, раздел 4.2.2 охватывает время дня, а раздел 4.3 охватывает дату и время дня вместе взятые.В спецификации также определены «базовый формат» и «расширенный формат» для каждого.

Некоторые примеры в базовом формате:

  • Дата: 20190611
  • Местное время: 140000
  • Дата и местное время: 20190611T140000

Некоторые примеры в расширенном формате:

  • Дата: 2019-06-11
  • Местное время: 14:00:00
  • Дата и местное время: 2019-06-11T14:00:00

Также есть изменения во времени дня, которые добавляют Zдля UTC или определенного смещения от UTC, например -07:00.(Это не относится к форме только для дат.)

Таким образом, чтобы ответить на ваш вопрос напрямую, да, вы можете указать только дату .Это по-прежнему соответствует стандарту ISO 8601, если вы используете одну из форм только для даты, показанных выше.(Расширенная форма обычно выбирается для ответов JSON.)

Кстати, это не просто вариант, это лучшая практика.Значение только для даты, такое как даты рождения и другие даты годовщины, не должно иметь привязанного времени, даже если это все нули.Это искажает их значение.

Тем не менее, помните о некоторых подводных камнях:

  • Некоторые платформы не имеют встроенного типа данных только для даты и назначают полночь.
  • Объект JavaScript Date (через стандарт ECMAScript) отличается от ISO 8601 и анализирует значения только для даты, как если бы они были в полночь по UTC вместо полуночи по местному времени.Таким образом, если вы вызываете свой API с веб-страницы, вы можете захотеть проанализировать значения самостоятельно, или использовать библиотеку, или оставить их в виде строк вместо Date объектов.
  • Существуют определенные часовые пояса, которыеиметь дни с прямым переходом (например, для перехода на летнее время) прямо в полночь, что означает тик часов с 23:59:59 до 01:00:00.Если вы укажете полночь, некоторые реализации будут идти вперед, некоторые - назад, а другие - с ошибкой.

Если вам нужно проанализировать значение только для даты в типе данных дата-время, в одну сторонучтобы избежать этих проблем, стоит назначить полдень (12:00) вместо полуночи (00:00).

Кроме того, вы можете убедиться, что ISO 8601 действительно является стандартом, которому вы должны соответствовать.Многие люди говорят ISO 8601, когда они на самом деле означают RFC 3339 .RFC 3339 в основном соответствует стандарту ISO 8601, но определяет только профиль дата + время + смещение.Таким образом, он подходит для отметок времени, но не для целых дат.

...