#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)