2012-01-17 3 views
3

システムのタイムゾーンを取得することに関する質問では、this answerがアップに投票されませんでした。ctimeのtzsetを使用する際の短所は何ですか?

time.hから(例えばdaylighttimezone、及びtznametzset()を使用すると、いくつかのシステムのグローバルを示唆しています。

いくつかのテストの後、私はWindowsとMacの両方でこのメソッドから正確な結果を得ることができました。しかし、私は上記の答えが推測されていない理由で投票していませんでした。これは本当ですか? このC標準ではなくOS固有の呼び出しを好むべきですか?

+4

'tzset'は標準のC関数ではありません。 –

+0

お役立ち情報しかし、それを使用しない唯一の理由はありますか?明らかにWindowsとMacはそれをサポートしているし、Linuxもそうだ。 –

+1

その答えが述べるように、 'tzset'はPOSIX関数です(http://pubs.opengroup.org/onlinepubs/007904875/functions/tzset.html)。それはどんなPOSIX準拠のシステムでも動作するはずなので、かなり移植性があります。 –

答えて

1

いいえ、標準のC関数がなくて(少なくとも1つのPOSIX準拠のシステムにプログラミングしている場合)、OS特有の機能よりもPO​​SIX関数を優先するべきです。

システムのいずれかがPOSIX準拠でない場合は、そのシステム専用のOS固有のソリューションが必要です。

+0

私は質問がC++/boostとタグ付けされていて、tzsetがPOSIX関数であるため、あなたの答えを投票しなかったと思います。しかし、そこに問い合わせる方が良いでしょう;) – Governa

+1

WindowsはPOSIX準拠ではありませんが、それをサポートしています。どうしたの? –

関連する問題