Книга: Linux программирование в примерах
6.1.5.1. Системы BSD: timezone(), не timezone
6.1.5.1. Системы BSD: timezone()
, не timezone
Некоторые производные от BSD 4.4 системы вместо переменной POSIX timezone
предоставляют функцию timezone()
:
#include <time.h> /* BSD */
char *timezone(int zone, int dst);
Аргумент zone
является числом минут западнее GMT, a dst
истинно, если действует летнее время. Возвращаемое значение является строкой, дающей имя указанного часового пояса, или значение, выраженное относительно GMT. Эта функция обеспечивает совместимость с функцией V7 с тем же именем и поведением.
Локальное время: откуда оно известно?
Системы GNU/Linux хранят информацию о часовых поясах в файлах и каталогах в /usr/share/zoneinfo
:
$ cd /usr/share/zoneinfo
$ ls -FC
Africa/ Canada/ Factory Iceland MST7MDT Portugal W-SU
America/ Chile/ GB Indian/ Mexico/ ROC WET
Antarctica/ Cuba GB-Eire Iran Mideast/ ROK Zulu
Arctic/ EET GMT Israel NZ Singapore iso3166.tab
Asia/ EST GMT+0 Jamaica NZ-CHAT SystemV/ posix/
Atlantic/ EST5EDT GMT-0 Japan Navajo Turkey posixrules
Australia/ Egypt GMT0 Kwajalein PRC UCT right/
Brazil/ Eire Greenwich Libya PST8PDT US/ zone.tab
CET Etc/ HST MET Pacific/ UTC
CST6CDT Europe/ Hongkong MST Poland Universal
Когда возможно, этот каталог использует прямые ссылки для предоставления одних и тех же данных с разными именами. Например, файлы EST5EDT
и US/Eastern
на самом деле одни и те же:
$ ls -il EST5EDT US/Eastern
724350 -rw-r--r-- 5 root root 1267 Sep б 2002 EST5EDT
724350 -rw-r--r-- 5 root root 1267 Sep 6 2002 US/Eastern
Частью установки системы является выбор часового пояса. Надлежащий файл данных часового пояса помещается затем в /etc/localtime
:
$ file /etc/localtime
/etc/localtime: timezone data
На нашей системе это автономная копия файла для нашего часового пояса. На других системах это может быть символическая ссылка на файл в /usr/share/zoneinfo
. Преимуществом использования отдельной копии является то, что все по-прежнему работает, если /usr
не смонтирован.
Переменная окружения TZ
, если она установлена, перекрывает значение по умолчанию для часового пояса:
$ date /* Дата и время в часовом поясе по умолчанию
*/
Wed Nov 19 06:44:50 EST 2003
$ export TZ=PST8PDT /* Смена часового пояса на Западное
побережье США */
$ date /* Вывести дату и время */
Wed Nov 19 03:45:09 PST 2003
Широкое распространение этой функции делает переносимое использование переменной POSIX timezone
трудной. К счастью, мы не видим большой потребности в ней strftime()
должно быть достаточно едва ли не для большинства необычных потребностей
- Desktop’изация BSD
- Особенности системы защиты данных в InterBase
- Установка системы на уже подготовленный жесткий диск
- 1.3. Системы счисления
- 7.4. Модель системы автоматизированного проектирования защиты информации
- 1. Системы управления базами данных
- 4. Полнота системы правил Армстронга
- Наик Дайлип Системы хранения данных в Windows
- Глава 6 Файловые системы
- Глава 10 Возможности подсистемы хранения данных в различных версиях Windows NT
- 6.4 Другие файловые системы
- 6.6 Файловые системы для сетей хранения данных