2012-01-17 6 views
3

В вопросе получения часового пояса системы this answer не встал на голосование.Каковы недостатки использования tzset ctime?

Это предполагает использование tzset() и некоторые системные глобалы (например daylight, timezone и tzname) от time.h.

После некоторого тестирования я смог получить точные результаты этого метода как на Windows, так и на Mac. Но я предполагаю, что упомянутый выше ответ не был проголосован по какой-то причине. Это правда? Должен ли я предпочитать вызовы, специфичные для ОС, вместо этого стандарта C?

+4

'tzset' не является стандартной функцией C. –

+0

Полезно знать. Но разве это единственная причина не использовать его? Очевидно, Windows и Mac поддерживают его, и, похоже, Linux тоже. –

+1

Как говорится в этом ответе, 'tzset' является функцией POSIX (http://pubs.opengroup.org/onlinepubs/007904875/functions/tzset.html). Он должен работать на любой совместимой с POSIX системе, поэтому он довольно портативен. –

ответ

1

Нет, если не существует стандартной функции C (и вы программируете по меньшей мере одну совместимую с POSIX систему), то вам следует использовать функции POSIX по сравнению с конкретными ОС.

Если какая-либо из ваших систем не совместима с POSIX, тогда у вас должно быть специальное решение для ОС только для этой системы.

+0

Я думаю, что они не голосовали за ваш ответ, потому что вопрос был помечен C++/boost, а tzset - функция POSIX. Но было бы лучше спросить там;) – Governa

+1

Windows не совместима с POSIX, но поддерживает ее. Что с этим? –