2011-11-25 23 views
2

gmtime()localtime()の違いは何ですか? 私の条件: 私の場所の時間帯ごとに時間を表示する必要があります。 POSIX(UTC)形式の時間が秒単位であります。私は秒単位で(UTCと私の現在の場所の間の)タイムゾーンのオフセットを持っています。 タイムゾーンオフセットを加算または減算します。 これ以降、私はまだPOSIX形式の時間があります。 これを人間の時間に変換するには、gmtime()またはlocaltime()を使用する必要があります。これは私も日付が必要なためです。 明確にしてください。 ありがとう!C++のタイムゾーンに基づく時間

答えて

0

gmtimeは、UTC —協定世界時です。いつでもどこでも同じように です。 localtimeは、現地時間の解釈である。 は、タイムゾーンによって決定され、サマータイムが有効かどうか、または ではない。タイムゾーンは、環境変数TZ、 によって決まります。ユーザは、そのローカルタイムゾーンに設定する必要があります。この変数 が設定されていない場合、実装定義のデフォルトが使用されます。通常は、マシンがある時間帯の です。

1

自分でタイムゾーンのオフセットを提供するのではなく、環境を介してリアルタイムゾーンの指定を提供するべきです。次に、localtimeはあなたにローカライズされた時間を与えます。 (gmtimeは常にあなたにUTCを与えます。)あなたのコードが

struct tm time_buffer, *localtime; 
localtime = localtime_r(timep, &time_buffer); 
printf("The hour is %i\n", localtime->tm_hour); 

のように見えるとし、その後、あなたはあなたのプログラムが経由して呼び出します。

$ TZ=Europe/Berlin my-program 

とベルリンの現地時間を取得し、正常に夏時間に合わせて調整。

自分でタイムゾーンを指定する必要がある場合は、man tzsetとお読みください。

関連する問題