を使用してCで現在の時刻を取得しようとしていtime_t current_time = time(NULL)
ます。私が理解しているように、それは私にシステムの現在の時刻を返すでしょう。後でstructを使用してGMT時間に変換しようとしていtm* gmt = gmtime(¤t_time)
ます。
ctime()
と関数を使用して両方の時間を印刷しasctime()
ます。
私のシステムの現在の時刻はGMT+1gmtime()
ですが、同じ時刻が返されますcurrent_time
。なぜgmtime()
同じ時間に戻ってくるのか理解できませんでした。どんな助けでもありがたいです。
コードと出力は次のとおりです。ウィンドウが表示されている現在の時刻は17:54(Stockholmゾーン; GMT + 1)です。15:54に何か返して欲しい。または、おそらく私の理解は間違っています...
time_t current_time = time(NULL);
struct tm* gmt = gmtime(¤t_time);
struct tm* loc = localtime(¤t_time);
printf("current time: %s\n", ctime(¤t_time));
printf("gmt time %s\n", asctime(gmt));
printf("local time %s\n", asctime(loc));
出力:
current time: Mon Oct 8 17:54:06 2012
gmt time Mon Oct 8 17:54:06 2012
local time Mon Oct 8 17:54:06 2012
受け入れられた解決策: Simesから
それはおそらくあなたの問題です。TZ環境変数の値を確認してください。存在しない場合、デフォルトでGMTになります。Cygwinは、Windowsからタイムゾーン設定を自動的に取得しません。cygwinシェルで実行されているWindowsプログラムのlocaltimereturnsGMTも参照してください。