2013-06-20 7 views
3

Есть ли какие-либо функции на языке C для установки системного времени в Linux? Я также должен установить свой часовой пояс системы. Другими словами, если мой часовой пояс IST, могу ли я установить его в UTC?Установить системный часовой пояс в Linux

+0

Посмотрите на 'hwclock' исходный код. – ymn

+0

Возможный дубликат [Как установить часовую зону перед вызовом strftime?] (Http://stackoverflow.com/questions/1620188/how-can-i-set-the-time-zone-before-calling-strftime) – devnull

ответ

0
#include <sys/time.h> 
#include <time.h> 

int main() 
{ 
    time_t theTimeInSeconds = time(0); 

    theTimeInSeconds -= (5.5f * 60 * 60); // sub (5.5 * 60 mins * 60 secs) from current time 

    struct timeval tv = { theTimeInSeconds, 0 }; 

    settimeofday(&tv, 0); 

    return 0; 
} 
2

Используйте stime, чтобы установить время и tzset установить часовой пояс.

Обратите внимание, что параметр tz (часовой пояс) равен settimeofday является устаревшим.

1

Часовой пояс по умолчанию, используемый процессами, которые не имеют переменной TZ в своей среде, определяется содержимым /etc/localtime. Найдите часовой пояс, который вы хотите, в /usr/share/zoneinfo и скопируйте его или напишите его.

rm /etc/localtime 
ln -s /usr/share/zoneinfo/Etc/GMT /etc/localtime 

Есть некоторые интерактивные инструменты, которые помогут вам выбрать часовой пояс, но они различаются в зависимости от распределения (например, Debian-х dpkg-reconfigure tzdata)

0

Вы можете установить часовой пояс с помощью этого

setenv("TZ", "PST8PDT", 1); 
tzset(); 
Смежные вопросы