Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
В общем виде время ведётся как количество (обычно unsigned long) секунд от выбранной даты "начала эпохи". Одна из таких дат - 1 января 1970 года. Это время, ведущееся в количестве секунд, соответствует зимнему, да ещё и может вестись по Гринвичу. Перевод из unsigned long в формат ГГММДДЧЧММСС (и обратно) производится чистой арифметикой (но только для зимнего времени). Летнее время необходимо лишь для отображения. При нахождении числа между известными числами, соответствующим моментам перехода с зимнего на летнее и с летнего на зимнее, взводится признак "отображать как летнее" и при отображении соответственно прибавляется час. Поправок может быть больше - начиная от отклонения от GMT, заканчивая подробностями принудительного "перевода" часов).
Настоящие функции перевода учитывают кучу исключений типа високосных секунд и особенностей ведения времени в конкретной местности, типа нецельночасовых смещений и всяких законотворческих инициатив.
Для того, чтобы увидеть, как это выглядит более наглядно, можете создать файл на одном компе, а потом посмотреть время его создания на другом с другим часовым поясом. (кроме самопальных вариантов ОС время создания файла пишется по GMT).
Составить ответ | Вернуться на конференцию.
Ответы