2013-07-11 1 views
6

Удивление, если я должен удалить данные о времени, которые обычно хранятся. Мы используем postgres и node.js где DateTime бы получить возвращенную из нашего API, как:JSON Формат даты (без времени), возвращающийся из API

2013-07-01T00:00:00.000Z

Тем не менее, поскольку это поле должны представлять только дату, я чувствую переформатирование перед возвращением, как это сделало бы его более ясным, что время не имеет значения:

2013-07-01

Мысли?

+0

Звучит разумно для меня. –

+0

Получил эту проблему тоже. Создайте таблицу пользователя с днем ​​рождения, тип даты. Таким образом, он должен иметь только дату (без времени). Получите время, когда запрашивается узел-postgres. – Kiddo

ответ

3

Как пользователь API, я бы скорее получил длинную форму даты.

По несколько причин:

  1. Time Zone:. Длинный формат действительно имеет часовой пояс, построенный в Это важно.
  2. Parsing: большинство языков смогут читать этот длинный формат как родной объект «Дата». На некоторых языках, таких как C# & Java, эта короткая дата должна быть принудительно использована в правильном часовом поясе. Вы также избегаете замешательства Месяца/Дня с длинным форматом.
  3. Сравнения: если пользователь прошел в на короткую дату, будет ли ваш API правильно работать? Хороший API должен выглядеть одинаково.
4

Если вы являетесь календарной датой, то нет времени или часовой пояс. Короткое представление имеет больше смысла.

К сожалению, новая дата (строка) во многих реализациях javascript может сделать bad things вам.

new Date('2015-09-23') 
Tue Sep 22 2015 20:00:00 GMT-0400 (Eastern Daylight Time) 

Самый простой выход из этой проблемы не использовать Дата JavaScript в - этот тип совпадает с DateTimeOffset на других языках. Это плохой способ представления значений календарных дат.

Но в любом случае вы, вероятно, собираетесь использовать дату javascript. Следующее простейшее «исправление» заключается в том, чтобы избежать стандартных представлений (поскольку стандартные представления интерпретируются как DateTimeOffset с UTC). Вот две возможности:

Используйте «/» вместо «-».

new Date('2015/09/23') 
Wed Sep 23 2015 00:00:00 GMT-0400 (Eastern Daylight Time) 

Используйте трехзначный месяц - ведущие нули будут отброшены.

new Date('2015-009-23') 
Wed Sep 23 2015 00:00:00 GMT-0400 (Eastern Daylight Time) 

Если у вас есть javascript на стороне клиента и сервера, все готово. Если у вас есть что-то еще на стороне сервера, вы должны подумать о том, что сделает серверный язык, если он увидит нестандартные форматы даты.