Usando sed
e bc
:
date +%z | sed -E 's/^([+-])(..)(..)/scale=2;0( + \/60)/' | bc
Isso lhe dará 2.00
de volta no fuso horário em que estou ( +0200
).
Com fusos horários estranhos / incomuns:
$ echo '+0245' | sed -E 's/^([+-])(..)(..)/scale=2;0( + \/60)/' | bc
2.75
$ echo '-0245' | sed -E 's/^([+-])(..)(..)/scale=2;0( + \/60)/' | bc
-2.75
A expressão sed
transformará o fuso horário em " bc
script". Para o fuso horário +HHMM
, o script será
scale=2;0+(HH + MM/60)
Por -HHMM
será
scale=2;0-(HH + MM/60)
O zero está lá porque meu bc
não entende unary +
.
Se você só vai lidar com fusos horários de horas inteiras, então você pode usar
date +%z | sed -E 's/^([+-])(..)../0/' | bc
que lhe dará números inteiros.