Использование sed
иbc
:
date +%z | sed -E 's/^([+-])(..)(..)/scale=2;0\1(\2 + \3\/60)/' | bc
Это вернет вас 2.00
в часовой пояс, в котором я нахожусь(+0200
).
Со странными/необычными часовыми поясами:
$ echo '+0245' | sed -E 's/^([+-])(..)(..)/scale=2;0\1(\2 + \3\/60)/' | bc
2.75
$ echo '-0245' | sed -E 's/^([+-])(..)(..)/scale=2;0\1(\2 + \3\/60)/' | bc
-2.75
Выражение sed
превратит часовой пояс в «bc
скрипт». Для часового пояса +HHMM
скрипт будет
scale=2;0+(HH + MM/60)
Для -HHMM
будет
scale=2;0-(HH + MM/60)
Ноль там, потому что мой bc
не понимает унарный +
.
Если вы собираетесь иметь дело только с полными часовыми поясами, вы можете использовать
date +%z | sed -E 's/^([+-])(..)../0\1\2/' | bc
который выдаст вам целые числа.