Преобразование смещения часового пояса "+00: 00" в минуты

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

Как я могу это сделать?

Умножьте часы на 60.

mishik 16.08.2018 10:20

Как мне разобрать его, чтобы получить часы? Не с расколом (мой босс этого не примет)

Nadav Shabtai 16.08.2018 10:21

@NadavShabtai Почему нельзя использовать сплит?

phuzi 16.08.2018 10:24

Потому что мой босс хочет использовать официальные функции moment.js или javascript Date

Nadav Shabtai 16.08.2018 10:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
2 582
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Просто получите час смещения, а затем умножьте его на 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?

Nadav Shabtai 16.08.2018 10:23

Часы экспорта? Что ты имеешь в виду? И почему вы хотите это сделать?

Adrian 16.08.2018 10:23

@NadavShabtai Похоже, это меньшая часть чего-то. Что вы на самом деле пытаетесь сделать?

phuzi 16.08.2018 10:24

Я просто хочу получить смещение часового пояса, представленное минутами, без функции разделения (мой босс не примет такой способ)

Nadav Shabtai 16.08.2018 10:41

@ Adriani6 minutesOffset не учитывает минутную часть строки и, следовательно, var minutesOffset = (parseInt(offset[1] + offset[2]) * 60) + parseInt(offset[4] + offset[5])

sahalMoidu 31.05.2020 04:30

Вы можете попробовать использовать метод Смещение синтаксического анализа из часовой пояс 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

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

kevinSpaceyIsKeyserSöze 16.08.2018 11:37

Другие вопросы по теме