バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWZone

形式

#include <time.h>
#include <rw/zone.h>

(抽象基底クラス)

説明

このクラスは抽象基底クラスです。夏時間を使用しているかどうか、タイムゾーンの名前、標準時および夏時間両方の世界時間 (UTC: グリニッジ標準時 (GMT) と同じ) からのずれ、夏時間を使用している場合の夏時間の開始時刻と終了時刻、といったタイムゾーンに関する問題とのインタフェースを定義します。このクラスは抽象基底クラスなので、実際の処理を行うことはできません。以下の説明は、RWZone の派生クラスの代表的な行動を示しているだけです。

ほとんどのプログラムにとって RWZone とのかかわりは、RWZone への参照を RWTime または RWDate のメンバー関数に渡すことだけです。

RWZoneSimple は、米国の夏時間規則を十分表現できる、抽象 RWZone インタフェースを実装しています。RWZoneSimple の 3 つのインスタンスがプログラムの実行開始時に大域的実行環境から初期化されます。それらは現地時間、標準時間、世界時間をそれぞれ表します。これらのインスタンスは、RWZone::local()RWZone::standard()RWZone::utc() の各静的メンバー関数を呼び出すと使用可能になります。詳細は、RWZoneSimple を参照してください。

持続性

なし

#include <rw/zone.h>
#include <rw/rwtime.h>
#include <rw/rstream.h>

main(){
 RWTime now;
 cout << now.asString('\0', RWZone::local()) << endl;
 cout << now.asString("%x %X", RWZone::utc()) << endl;
 return 0;
}

列挙

enum DstRule { NoDST, NoAm, WeEu };

これは、後述する静的メンバー関数 dstRule()、または RWZone の派生クラスのコンストラクタが使用します。

enum StdZone {
  NewZealand = -12,     CarolineIslands,     MarianaIslands,
  Japan,                China,               Java,
  Kazakh,               Pakistan,            CaspianSea,
  Ukraine,              Nile,                Europe,
  Greenwich,            Azores,              Oscar,
  Greenland,            Atlantic,            USEastern,
  USCentral,            USMountain,          USPacific,
  Yukon,                Hawaii,              Bering
};

StdZone は標準タイムゾーンの名前を表します。これらの値は、RWZone の派生クラスのコンストラクタに渡されます。

公開メンバー関数

virtual int
timeZoneOffset() const = 0;

標準時の UTC からの西向きの差の秒数を返します。この値は、英国、グリニッジよりも東のゾーンでは負数になります。

virtual int
altZoneOffset() const = 0;

夏時間の UTC からの西向きの差の秒数を返します。

virtual RWBoolean
daylightObserved() const = 0;

このタイムゾーンで夏時間が実施されていれば TRUE を返します。

virtual RWBoolean
isDaylight(const struct tm* tspec) const = 0;

struct tm 引数の時刻と日付が夏時間の範囲に入っていれば TRUE を返します。struct tm 引数の各要素の間に矛盾があってはいけません。特に、tm_wday メンバーは tm_yeartm_montm_day の各メンバーと一致していなくてはなりません。

virtual void
getBeginDaylight(struct tm*) const = 0;
virtual void
getEndDaylight  (struct tm*) const = 0;

tm_year メンバーで指定された年の夏時間が開始または終了する (現地) 時刻を、struct tm 引数にセットして返します。夏時間が実施されていなければ、struct tm 引数にはすべて負数が設定されます。南半球では、夏時間が終了する日付は夏時間が開始する日付よりも早くなります。

virtual RWCString
timeZoneName() const = 0;
virtual RWCString
altZoneName() const = 0;

"PST" や "PDT" など、標準および夏時間を採用しているタイムゾーンの名前を返します。

静的公開メンバー関数

static const RWZone&
local();

現地時間を表す RWZone に対する参照を返します。この値は、RWZone を使用する RWDateRWTime 関数のデフォルトの引数値として使用します。デフォルトでは、夏時間がある場合は米国の規則により、オペレーティングシステムがオフセットとゾーン名を使用して作成する RWZoneSimple のインスタンスです。

static const RWZone&
standard();

標準現地時間を表す RWZone に対する参照を、夏時間補正を行わずに返します。デフォルトでは、オペレーティングシステムから作成される、オフセットとゾーン名を持つ RWZoneSimple のインスタンスです。

static const RWZone&
utc();

UTC (ユニバーサル時間) を表す RWZone に対する参照を返します。

static const RWZone*
local(const RWZone*);
static const RWZone*
standard(const RWZone*);

上記の他の関数が返す値を設定します。この関数は、前の値を返します。

static constRWDaylightRule*
dstRule(DstRule rule = NoAm);

rule に従う内蔵の夏時間規則の 1 つを返します。この関数は、一般的な夏時間規則に従うタイムゾーンで RWZoneSimple インスタンスを作成する際に便利です。現在、2 種類の夏時間規則があります。米国とカナダの NoAm、および西ヨーロッパの大部分の国 (英国を除く) の WeEu です。詳細は RWZoneSimple を参照してください。DstRule NoDst が与えられると、0 が返されます。この関数 dstRule() を呼び出した結果は通常、RWZoneSimple コンストラクタに渡されます。