Javascript набор Date объект из нескольких строк - PullRequest
0 голосов
/ 06 июля 2018

Я действительно новичок в создании дат в JavaScript, и у меня возникла очень интересная ситуация, когда мне нужно создать объект Date в Javascript, но все отрезки времени из API находятся в разных местах, например:

"Thursday": {
  "times": {
    "currently_open": false,
    "status": "open",
    "hours": [
      {
        "from": "8:00am",
        "to": "1:00am"
      }
    ]
  },
  "date": "2018-07-12",
  "rendered": "8:00am - 1:00am"
},

Так или иначе, мне нужно объединить все элементы из date со временем hours[0].from. Но поскольку фактическое время отображается в строке как 8:00am в этом примере, я не совсем уверен, что мне нужно сделать, чтобы преобразовать это в время, которое может прочитать JavaScript.

Это, вероятно, довольно глупо, но я попытался создать новый объект Date, комбинируя значения из данных API следующим образом:

openTime = new Date( Thursday.date + 'T' + Thursday.times.hours[0].from + 'Z' );

Это не работает. лол. У кого-нибудь есть предложения? В основном я попытался создать строку, сложив все части вместе Любая помощь будет потрясающей. Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Использование Moment.js:

const time = Thursday.hours[0].from;

const match = /(.*)((a|p)m)/.exec(time);

const hourMin = match[1].length === 4 ? `0${match[1]}` : match[1];

const amPm = match[2];

const openTime = moment(`${Thursday.date} ${hourMin} ${amPm}`).toDate();
0 голосов
/ 06 июля 2018

Ваш формат времени / даты совершенно уникален, вы должны разобрать его вручную:

const Thursday = {
  "times": {
    "currently_open": false,
    "status": "open",
    "hours": [
       {
        "from": "8:00am",
        "to": "1:00am"
        }
    ]
  },
  "date": "2018-07-12",
  "rendered": "8:00am - 1:00am"
}

let [hours, minutes] = Thursday.times.hours[0].from.split(":").map(el => parseInt(el));

 if (Thursday.times.hours[0].from.includes("pm"))
  hours += 12;

const date = new Date(...Thursday.date.split("-").map((n, i) => n - (i === 1)), hours, minutes);
console.log(date.toString())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...