Microsoft C++ ライブラリを使用しているため、Windows マシンでのみコンパイルされる C++ プロジェクトを変換しています。_get_timezone
Ubuntu 12.10 マシンでコンパイル可能なfunction の代替手段はありますか?
MSDNの _get_timezoneドキュメント
Microsoft C++ ライブラリを使用しているため、Windows マシンでのみコンパイルされる C++ プロジェクトを変換しています。_get_timezone
Ubuntu 12.10 マシンでコンパイル可能なfunction の代替手段はありますか?
MSDNの _get_timezoneドキュメント
標準関数を使用して、自分で計算するだけだと思います:
#include <time.h>
namespace time_util {
double get_gmt_offset() {
time_t now = time(NULL);
struct tm *gm = gmtime(&now);
time_t gmt = mktime(gm);
struct tm *loc = localtime(&now);
time_t local = mktime(loc);
return difftime(local, gmt);
}
}
確かにそれらを並べてテストしていませんが、これは_get_timezoneが返すと予想するものについて返します(たとえば、私にとっては-25200を返します。これはUTC-7時間になります)。
物事を少し「いじる」必要がある/したい場所の1つは、対処することですtm_isdst
-_get_timezone
それが考慮されているかどうかを確認するのに十分なほど詳しく見ていませんでした。
Linux の代替手段_get_timezone
は関数ではなく、単にtimezone
変数であり、 で定義されていtime.h
ます。
extern long timezone;