Ubuntu 16の現在のタイムゾーンでftimeとgettimeofdayの両方が0を返しています。タイムゾーンは、Ubuntuの日付と時刻の設定で正しく設定されています。 TZ env変数セットはありません。gettimeofdayタイムゾーンが間違っているのはなぜですか?
これは多くの異なる状況で使用されているプロダクションソフトウェアであるため、私は単に「修正」したくありません。だから私は、プログラムでタイムゾーン(そして現在のDSTオフセットも同様に)を得る信頼できる方法がほしいだけです。
私の試みは、これまで:
#if 0
timeb tbTime;
ftime(&tbTime);
int CurTz = -tbTime.timezone;
#else
struct timeval tv;
struct timezone tz;
int r = gettimeofday(&tv, &tz);
if (r)
return NO_ZONE;
int CurTz = tz.tz_minuteswest;
#endif
「日付」コマンドが動作している:
[email protected]:~$ date +%Z
AEDT
[email protected]:~$ date +%z
+1100
私はちょうど「日付」をコールするプロセスを生成でき、それはとき利き非常に重いようですいくつかのAPIコールが利用可能です。 GNU/Linuxの
これは私のために正しく動作します(TZ envも定義されていません)。 OSXでテスト済み。 –
おそらく、異なるシステムには異なる設定があるからです。そのコードは、Windows上でうまく動作します。そしておそらく私のUbuntuは何とか壊れていますか?しかし、私はそれを現場に似ている「破った」システムで動作させる必要があります。 – fret