Здравствуйте, srmxx, Вы писали:
S>Здроавствуйте. Мне нужно реализовать фцункциональность для преобразования даты из GMT в конкретную временную зону (по названию) в линуксе.
1. Выставляете переменную окружения TZ=UTC
2. Переводите дату в unix timestamp — strptime()
3. Выставляете переменную окружения, например TZ=Asia/Vladivostok
Здравствуйте, citrin, Вы писали:
C>>1. Выставляете переменную окружения TZ=UTC C>>2. Переводите дату в unix timestamp — strptime() C>>3. Выставляете переменную окружения, например TZ=Asia/Vladivostok C>>4. Печатаете время — strftime()
C>Глянул маны — делать нужно немного не так:
C>1. strptime(): string -> struct tm C>2. setenv TZ=UTC, tzset() C>3. mktime(): struct tm -> unix timestamp; C>4. setenv TZ=Asia/Vladivostok, tzset() C>5. localtime(): unix timestamp -> struct tm C>6. strftime(): struct tm -> string
Угу, но я бы рекомендовал делать эти игры в отдельном процессе, который завершается сразу по получению результата. Это достаточно дёшево (если fork без exec) и гарантирует отсутствие хитрых эффектов от переключения зон.
The God is real, unless declared integer.
Re[4]: Временные зоны
От:
Аноним
Дата:
23.12.11 15:26
Оценка:
Здравствуйте, netch80, Вы писали:
N>Здравствуйте, citrin, Вы писали:
C>>>1. Выставляете переменную окружения TZ=UTC C>>>2. Переводите дату в unix timestamp — strptime() C>>>3. Выставляете переменную окружения, например TZ=Asia/Vladivostok C>>>4. Печатаете время — strftime()
C>>Глянул маны — делать нужно немного не так:
C>>1. strptime(): string -> struct tm C>>2. setenv TZ=UTC, tzset() C>>3. mktime(): struct tm -> unix timestamp; C>>4. setenv TZ=Asia/Vladivostok, tzset() C>>5. localtime(): unix timestamp -> struct tm C>>6. strftime(): struct tm -> string
N>Угу, но я бы рекомендовал делать эти игры в отдельном процессе, который завершается сразу по получению результата. Это достаточно дёшево (если fork без exec) и гарантирует отсутствие хитрых эффектов от переключения зон.
хуясе
надо на отдельном серваке, чтобы от NTP не зависеть
Здравствуйте, Аноним, Вы писали:
А>надо на отдельном серваке, чтобы от NTP не зависеть
А NTP тут причем? NTP устанавливает время по UTC — сколько секунд прошло с определенного момента в прошлом, это вообще никак не пересекается с часовыми поясами.
Здравствуйте, srmxx, Вы писали:
S>Здроавствуйте. Мне нужно реализовать фцункциональность для преобразования даты из GMT в конкретную временную зону (по названию) в линуксе.
Нормальным способом — никак. Самое близкое, что есть — boost.datetime. Там к нему .csv файл с описанием зон прилагается, который он использует.
Как прочитать системную информацию — я так и не разобрался.