Пример получения часового пояса ("tz")

Параметр tz можно получить используя битовые операции математического И (&) и математического ИЛИ (|).

Например нужно получить tz для часового пояса (-01:00) Азорские о-ва. (-3600) dst - нет (0x08000000).


1) К часовому поясу применяется математическое И по маске 0xf000ffff.

-3600 & 0xf000ffff
-268373520

2) К результату применяется математическое ИЛИ по маске соответствующей dst.

-268373520 | 0x8000000
-134155792

tz=-134155792

Обратная операция

tz=-134155792

1) К tz применяется математическое И по маске 0xffff.

-134155792 & 0xffff
61936

Следующий шаг выполняется только если значение tz < 0 как в примере. Если положительное, то результат будет в шаге 1

2) К результату применяется математическое ИЛИ по маске 0xffff0000.

61936 | 0xffff0000
-3600

Часовой пояс (-01:00) Азорские о-ва.


tz=-134155792 в hex 0xf800f1f0

1) Значение по маске 0x0fff0000 показывает dst.

0x08000000 - нет.