Регулярное выражение от чисел до GMT

#javascript #regex

Вопрос:

Я пытаюсь преобразовать -2 в формат часового пояса GMT.

Я так плохо разбираюсь в регулярных выражениях, что не знаю, с чего начать..

Или, может быть, можно найти GMT с помощью javascript ?

Результат, который мне нужен, это :

  • от : -2
  • до : -02:00
 date = new Date().getTimezoneOffset()/60
console.log(date)

==> -2 
 

Комментарии:

1. Вам также нужно перейти -2.5 в -02:30 или 8.75 в 08:45 ?

2. нет, только целые числа типа от -4 до -04:00, от 12 до 12:00, от 5 до 05:00

3. Итак, вы уверены, что нет пользователей из Ньюфаундленда с часовым -02:30 поясом или Eucla с часовым 08:45 поясом ? Во всем мире есть еще много мест с такими нецелыми часовыми поясами. Каковы возможные значения? Целые числа в диапазоне [-12, 12]?

4. date.replace(/d/, (d => d.toString().padStart(2, '0') ':00')) . Но это не сработает для всех людей из Ирана, Непала, Афганистана, Мьянмы … и некоторых людей из Канады, Новой Зеландии, Индии … Он должен работать в Венесуэле на даты после 2016 года, но не раньше.

5. Вы должны преобразовать date в строку: date.toString().replace(/d/, (d => d.toString().padStart(2, '0') ':00')) . Просто для уточнения. Регулярное выражение таково /d/ . Другая часть-это просто базовый JavaScript.

Ответ №1:

Вот как я решил эту проблему :

 number1 = 5
number2 = -5
number3 = 11
number4 = -11
number5 = 0

const toGmt = (num) => {
  if ( (10 > num) amp;amp; (num > 0) ) {
    return "(GMT 0" num ":00)"
  } else if ( 10 <= num ) {
    return "(GMT " num ":00)" 
  } else if ( (0 > num) amp;amp; (num > -10) ) {
    return "(GMT-0" Math.abs(num) ":00)"
  } else if ( num <= -10 ){
    return "(GMT" num ":00)"
  } else if ( num === 0 ){
    return "(GMT 0" num ":00)"
  }
}

console.log(toGmt(number1)) ==> (GMT 05:00)
console.log(toGmt(number2)) ==> (GMT-05:00)
console.log(toGmt(number3)) ==> (GMT 11:00)
console.log(toGmt(number4)) ==> (GMT-11:00)
console.log(toGmt(number5)) ==> (GMT 00:00)