はじめまして。
C++(VS 6.0)でパソコンのローカルの時間とグリニッジ時のオフセット量を取得したいのですが、うまくいきません。
_tzset();
long time = _timezone;
で取れると思ったのですが、timeに入っていたのは0xfffffff7という数字で
intするとやはりおかしな数字でした。
日本時間なら9になるはずですよね?
どうしたらいいでしょうか?
ちなみに環境設定でTZ=JST-9を登録してみましたがだめでした。
どなたかお願いします。
setlocale( LC_ALL, "Japanese" );
を入れてください。
Microsoft サポートオンライン
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B409106
サンプル)
#include <time.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
setlocale( LC_ALL, "Japanese" );
if( _putenv( "TZ=JST-9" ) != -1 )
{
_tzset();
long t = _timezone;
printf( "時差 %ld 時間\n", t / 3600 );
}
return 0;
}
マルチポスト
http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=5987
>で取れると思ったのですが、timeに入っていたのは0xfffffff7という数字で
>intするとやはりおかしな数字でした。
>日本時間なら9になるはずですよね?
0xfffffff7であっています。
日本時間は−9です。
>TZ=JST-9
でも"-9"として登録しています。
>0xfffffff7であっています。
そうでしたね。ロケールを設定するのは別の問題だったですね。
_timezoneが返す値は、秒数なので、
> printf( "時差 %ld 時間\n", t / 3600 );
にょうに、60分×60秒 をしないと、時にはなりませんね。
返事が遅れて申し訳ありません。
無事解決しました。
秒を時間に直すこと、そして結果の+−を逆に考えてました。
簡単なことでしたね。
ありがとうございました
ツイート | ![]() |