Вызов
Учитывая время и часовой пояс в качестве входных данных, выведите время в этом часовом поясе.
Время
Время будет указано в 24-часовом формате, например:
hh:mm
Где hh - двузначный час, а mm - двузначная минута. Обратите внимание, что час и минута всегда будут дополнены нулями, например:
06:09
Время указано в UTC + 00: 00.
Часы в вашем выводе не должны быть дополнены нулями, но ваше время должно быть в 24-часовом формате
Часовой пояс
Часовой пояс будет указан в следующем формате:
UTC±hh:mm
Где ± будет + или a - и hh, это двухзначный час, а mm это двухзначная минута (опять же, они будут дополнены нулями).
Чтобы найти время в этом часовом поясе, вы либо добавляете (если символ - +), либо вычитаете (если символ - -) время после UTC ± из введенного времени.
Например, если ввод был 24:56
и UTC-02:50
, вы вычли бы 2 часа и 50 минут из 24:56:
24:56
02:50 -
-----
22:06
Выход будет 22:06
.
Примеры
Чикаго
Input: 08:50 and UTC-06:00
Output: 02:50
Катманду
Input: 09:42 and UTC+05:45
Output: 15:27
Самоа
Input: 06:42 and UTC+13:00
Output: 19:42
Гавайи
Input: 02:40 and UTC-10:00
Output: 16:40
Обратите внимание, что это было в предыдущий день.
Токио
Input: 17:25 and UTC+09:00
Output: 02:25
Обратите внимание, что это пошло на следующий день.
правила
Вы не должны использовать какие-либо встроенные функции даты или библиотеки.
Предположим, что все входные данные будут действительными временами и смещениями времени.
Часовой пояс будет в диапазоне UTC-24:00
от UTC+24:00
включительно.
В случае половины третьего ночи правильное представление должно быть 00:30
, а не 24:30
.
выигрыш
Самый короткий код в байтах побеждает.
26:02
и08:74
не появится? То же самое для смещений UTC?2:25
)1:5
ли допустимым время вместо1:05
? Я думаю, что только часы не должны быть дополнены. Также ваш пример с24:56
этим не должен быть,00:56
так как вы указали диапазон до24:00
и выразили подобное в своем сценарии полуночи?Ответы:
APL (Dyalog APL) , 45 байтов
выражение
Принимает две строки в качестве правильного аргумента.
Попробуйте онлайн!
объяснение
24 60⊤
преобразование числа в основание - 24 b 60∘
из⍎
оценка∘
из⍕
отформатированный (т.е. сплющенный с разделительными пробелами)('+-'∩⍕)
пересечение «+ -» и отформатированного ввода (это извлекает плюс или минус),
с последующим(
...)¨
следующее для каждого из входов (время и смещение)0 60⊥
∞ б 60 -в-номер преобразования2⊃
второй элемент':'⎕VFI
, используя двоеточие в качестве разделителя полей, V erified и Р ixed Я Nput из¯5∘↑
последние пять символов ("чч: мм")Пошаговые инструкции «17:25» и «UTC + 09: 00»
Выражение в левой части данных справа, дает данные следующей строки.
источник
C 109 байтов
Вызовите следующим образом:
источник
UTC-03:30
?JavaScript (ES6), 101 байт
Было бы 121 байт, если бы я добавил часы.
источник
Python 2, 129 байт
Позвонить как
T("02:45", "UTC-05:33")
источник
;
.Python 2, 84 байта
Все тесты в идеале
Выходной формат разделен пробелом, без начальных нулей.
источник
Java 201 байт
Вызывается как T («12:00», «UTC + 02: 40»)
Беззаботный по логике,
Любая помощь, чтобы получить его ниже 200 будет принята с благодарностью!
источник
Integer i=1;
и замените все остальныеInteger
наi
, так что выi.valueOf
вместоInteger.valueOf
.14:27
вместо15:27
.java.util.function.Function v=Integer::valueOf
. Не уверен, что это действительно сэкономит.Рубин, 95 байт
использование
Входы (пример)
источник
Javascript (ES6),
9392 байтаКонтрольные примеры
источник
Джава
156150149147142 байтаТестовые случаи и безгольф
стружка
a/H*60+b/H*60
->(a/H+b/H)*60
(T/H+Z/H)*60+1440
->(T/H+Z/H+24)*60
.z.replace(":","").substring(3)
->z.replaceAll("[UTC:]","")
источник
C #
214205183 байта205-байтовая версия
Ungolfed
Оригинал 214:
источник
CJam , 40 байт
Попробуйте онлайн! (Как набор тестов.)
объяснение
источник
Сетчатка , 100 байт
Попробуйте онлайн!
объяснение
Заменяет каждый
:
с 59 из них и запятой в качестве разделителя.Неоднократно дублирует число перед a
:
. Таким образом, первые два этапа умножают значение часа на 60.Перевести все числа в одинарные.
Если на входе есть знак минус, то этот этап транслитерации превращает все
1
s после него в0
s. Мы в основном используем здесь0
как унарную-1
цифру.Вставьте 1440
1
с (т. Е. Полный день). Это должно гарантировать, что время не становится отрицательным.Это многократно удаляет все не цифры (то есть пробел
UTC
,+
или-
, как и все,
мы вставили) и10
комбинацию, компенсируя тем самым положительные и отрицательные числа. Это в основном вычитает второе число из первого, если оно отрицательное, или добавляет его в противном случае.Удаляет 1440
1
с, если это возможно (в основном результат по модулю 1440, чтобы уместить его в течение 24 часов).Разложите число на часы и минуты, сопоставив как можно больше фрагментов из 60 цифр (считая фрагменты с
$#1
), а затем оставшиеся цифры (длина которых считается с$.2
).Если в результате есть какие-либо цифры, добавьте ноль.
источник