2013-08-19 3 views
-2

Я использую Ubuntu 10.04 и устанавливаю системный часовой пояс «Европа/Лондон». Я хочу, чтобы системный часовой пояс был установлен в формате выше, а не «IST, EST и т. Д.». В любом случае, я могу получить строку часового пояса в том же формате, который мы задали как «Европа/Лондон».Как найти текущий системный часовой пояс

Как указано выше, ссылка на дублирование, но на самом деле это не отвечает на мой вопрос. Прежде чем отправлять этот вопрос, я проверил вышеуказанную ссылку.

Просьба предложить.

Спасибо заранее.

+0

проверить это: http://www.boost.org/doc/libs/1_54_0/doc/html/date_time.html, но я не уверен, если есть такая вещь. – Dino

+1

См. [Как найти текущий часовой пояс системы?] (Http://stackoverflow.com/questions/3118582/how-do-i-find-the-current-system-timezone?rq=1) – elmov

+0

Спасибо за обновление , Я проверил вышеуказанную ссылку, но в ссылке нет правильного решения, я нашел, что вот почему я спросил это как второй раз. Есть ли у кого-нибудь идеи, чем поделиться им. –

ответ

0

time.h определяет функцию для извлечения системы часового пояса и сохранить его в двух строковых переменных:

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 

int main() { 
    char * TZ = getenv("TZ"); 
    if (TZ) 
     printf("TZ: %s\n", TZ); 
    tzset(); 
    printf("Timezone: %s/%s\n", tzname[0], tzname[1]); 
    printf("GMT %s%ld\n", timezone >= 0 ? "+" : "", timezone); 
    printf("DST %s\n", daylight ? "ON" : "OFF"); 
} 

Пожалуйста, обратите внимание, что на некоторых системах (например, Linux), эта функцию доставленного это информация из переменных в TZ среды. Если он не установлен, будет дано приближение или переменные останутся неинициализированными.

В моей ОС X эта информация, похоже, происходит откуда-то еще.

+0

Я запустил вашу программу, и это дало мне это. amrith @ amrith-VBox: ~/$ так ./tz Timezone: EST/EDT GMT +18000 DST ON amrith @ amrith-VBox: ~/$ так Не то, что вопрос просил, я дон 't думаю ... – amrith

+0

Да выше программы не даст результат, который просил. Результат должен поступать в строку типа «Азия/Калькутта» или «Европа/Лондон». –

-1

Почему бы не просто кошка/etc/часовой пояс?

[email protected]:~/so$ more /etc/timezone 
America/New_York 
+0

Спасибо. Поскольку я знаю, что/etc/timezone не будет существовать для всех типов ОС Linux (Red hat, fedora, cent os, ubuntu и т. Д.), Поэтому я считаю, что это не общее решение. –

+0

Действительно? Должен ли я напомнить вам, что ваш вопрос гласит: «Я использую Ubuntu 10.04 и ...». – amrith