The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"перевод времени в часовой пояс"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"перевод времени в часовой пояс"  
Сообщение от Sergeyka on 15-Апр-06, 23:18 
получаю данные,
заполняю struct tm* ptm;
    ptm->tm_sec = 10;
    ptm->tm_min = 20;
    ptm->tm_hour = 1;
    ptm->tm_mday =15;
    ptm->tm_mon = 3;
    ptm->tm_year = 2006 -1900;

далее мона
strftime( time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm );
и тп

люди плз HELP, как корректно перевести полученное время GMT например в Мск часовой пояс,
что бы учесть переходы день/месяц/год/высокосные

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "перевод времени в часовой пояс"  
Сообщение от DeadMustdie email(??) on 16-Апр-06, 10:56 
Если время в GMT доступно как time_t, проблема решается тривиально через функцию localtime(). Если же оное время в GMT прибыло разбитым на поля, приходится склеивать его в time_t ручками. Если кто знает стандартную функцию, пожалуйста поделитесь, мне таковая неизвестна.

Идею кода для своей собственной реализации "склеивания" я в своё время взял отсюда:
  http://www.imatix.com/html/sfl/
Кодом поделиться, звиняйте, не могу, часть коммерческой системы.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "перевод времени в часовой пояс"  
Сообщение от Sergeyka on 17-Апр-06, 10:14 
благодарю!
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "перевод времени в часовой пояс"  
Сообщение от Sergeyka on 17-Апр-06, 14:29 
наваял:
string gmt_to_local( int year, int mon, int day, int hour, int min, int sec ){
    struct timeval tv;
    struct tm* ptm;
    char time_string[40] = {0};
    string result;
    time_t tmt;
    long tzone;
    int timezone_hours, is_dst;
    extern time_t timezone;

    is_dst = 0;
    gettimeofday(&tv, NULL);
    ptm = localtime(&tv.tv_sec);
    is_dst = ptm->tm_isdst;

    tzone = (-1) * timezone;
    timezone_hours = tzone / 3600;
    timezone_hours += is_dst;

    ptm->tm_year = year - 1900;
    ptm->tm_mon = mon -1;
    ptm->tm_mday = day;
    ptm->tm_hour = hour + timezone_hours;
    ptm->tm_min =  min;
    ptm->tm_sec = sec;

    tmt = mktime( ptm );
    ptm = localtime( &tmt );

    strftime( time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm );

    result = time_string;
    return ( result );
}

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру