У меня есть функция, которая возвращает строки timezone offset (например, «+03: 00»)
И я хочу преобразовать эту строку в смещение минут ("+ 03:00" должно превратиться в 180), используя moment.js или встроенные параметры простого javascript.
Как я могу это сделать?
Как мне разобрать его, чтобы получить часы? Не с расколом (мой босс этого не примет)
@NadavShabtai Почему нельзя использовать сплит?
Потому что мой босс хочет использовать официальные функции moment.js или javascript Date



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто получите час смещения, а затем умножьте его на 60, как показано ниже:
function parseOffset(offset){
var minutesOffset = (parseInt(offset[1] + offset[2]) * 60)
console.info(parseInt(offset[0] + minutesOffset.toString()))
}
parseOffset("+03:00");
parseOffset("-02:00");Вышеупомянутое также возвращает отрицательное смещение.
Единственный способ получить минуты из объекта даты в простом javascript - это использовать
.getTimezoneOffset() - но, судя по вашему вопросу, это не так.
Я не знаю другого способа разобрать "+03: 00" на минуты.
Могу ли я экспортировать часы с помощью moment.js или Date?
Часы экспорта? Что ты имеешь в виду? И почему вы хотите это сделать?
@NadavShabtai Похоже, это меньшая часть чего-то. Что вы на самом деле пытаетесь сделать?
Я просто хочу получить смещение часового пояса, представленное минутами, без функции разделения (мой босс не примет такой способ)
@ Adriani6 minutesOffset не учитывает минутную часть строки и, следовательно, var minutesOffset = (parseInt(offset[1] + offset[2]) * 60) + parseInt(offset[4] + offset[5])
Вы можете попробовать использовать метод Смещение синтаксического анализа из часовой пояс momentjs.
Использование:
var zone = moment.tz.zone('America/New_York');
zone.parse(Date.UTC(2012, 2, 19, 8, 30)); // 240
Используя vanilla JS, вы получаете минуты, используя приведенное ниже, и оно учитывает положительные и отрицательные смещения.
let offset = '-03:30';
let [h, m] = offset.split(':');
let hours = Number.parseInt(h);
let minutes = Number.parseInt(m);
let totalMinutes = hours * 60 + (hours < 0 ? (-minutes) : minutes);Я нашел решение:
moment().utcOffset("+03:00").utcOffset() // returns 180
moment().utcOffset("-09:00").utcOffset() // returns -540
вы можете принять свой ответ, чтобы он больше не открывался
Умножьте часы на 60.