запутался насчет вызова API. Расчет времени между текущей датой и будущей датой - PullRequest
0 голосов
/ 12 марта 2020

Я работаю над проектом для курса, который должен сделать несколько вызовов API подряд. Я сделал первое и подготовил второе, но я не понимаю, о чем просит API. Я пытаюсь использовать API темного неба, чтобы получить прогноз погоды на будущее. У меня есть форма, в которой пользователь представляет будущую дату в формате ММ / ДД / ГГГГ, и я разделил ее на три переменные: месяц, день, год. Проблема в том, что я не уверен, о чем просит параметр времени. Из-за этого я получаю ошибку «Плохо форматированный запрос». В частности, я использую API запроса машины времени темного неба. Страница для этого здесь:

https://darksky.net/dev/docs#time -машина-запрос

Может кто-нибудь взглянуть и сказать мне, что именно он запрашивает для параметра времени?

Похоже, он запрашивает количество секунд между текущей и будущей датой. Как бы я рассчитал это?

Другой вариант - использовать формат даты, но я не уверен, как его отформатировать. Текущий запрос на выборку выглядит следующим образом:

const res = await fetch(`https://api.darksky.net/forecast/${darksky_key}/${lat},${lng},${year}-${month}-${day}`)

Может ли кто-нибудь взглянуть на этот API и параметр времени и сказать, что я делаю неправильно? И если мне нужно рассчитать время от одной даты до будущей, как мне это сделать?

Спасибо, Майкл

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Это не количество секунд между текущими и будущими данными, это UNIX время в секундах:

время требуется

Любой может быть временем UNIX (то есть секундами с полуночи по Гринвичу 1 января 1970 года) или строкой, отформатированной следующим образом: [YYYY]-[MM]-[DD]T[HH]:[MM]:[SS][timezone]. timezone следует либо пропустить (для обозначения местного времени для запрошенного местоположения), Z (относится к времени по Гринвичу), либо +[HH][MM] или -[HH][MM] для смещения от GMT в часах и минутах. Часовой пояс используется только для определения времени запроса; ответ всегда будет относиться к местному часовому поясу.

Вам нужно преобразовать указанную дату в ее unix представление метки времени.

Или вам следует исправить свою дату параметр, соответствующий формату:

const res = await fetch(`https://api.darksky.net/forecast/${darksky_key}/${lat},${lng},${year}-${month}-${day}T00:00:00Z`)

0 голосов
/ 12 марта 2020

говорит, что время должно быть в формате UNIX,

const time = new Date(`${year}.${month}.${day}`).getTime() / 1000
const res = await fetch(`https://api.darksky.net/forecast/${darksky_key}/${lat},${lng},${time}`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...