Мы добавляем поддержку часовых поясов в наше приложение Ubuntu.
Информация о часовом поясе на моей машине находится в /usr/share/zoneinfo
.
- Это всегда в этом каталоге? Если да, то где это указано ?
- Если нет, то есть ли системный вызов, аналогичный «gettimeofday (2)», который я могу сделать, чтобы выяснить, где он находится?
[ 114] blockquote>Заранее спасибо.
Местоположение поиска для часовых поясов кодируется в библиотеке C (где находятся различные функции, осведомленные о часовых поясах):
$ strings -a /lib/x86_64-linux-gnu/libc.so.6 | grep zoneinfo
/usr/share/zoneinfo
Код библиотеки C использует этот каталог в качестве препроцессора [ 111], так что нет никакой процедуры спрашивать, с каким значением он был скомпилирован.
Если вам нужно проанализировать данные часового пояса самостоятельно (в отличие от использования нескольких доступных подпрограмм библиотеки C), то жесткое кодирование /usr/share/zoneinfo
должно подойти: если ваши целевые платформы следуют иерархии файловой системы Linux , вы должны быть в безопасности.
Если вас интересует только местный часовой пояс, прочитайте /etc/localtime
, который будет копией соответствующего файла из /usr/share/zoneinfo
.