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

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


RWTime

形式

#include <rw/rwtime.h>
RWTime a;   // 現在の時刻で作成する

説明

このクラスは、1901 年 1 月 1 日 00:00:00UTC (ユニバーサル時間) からの秒数として格納されている時刻を表します。使用しているコンパイラにおけるタイムゾーンの設定方法については、第 8 章「クラス RWTime の使用法」を参照してください。タイムゾーンの設定を行わないと、UTC (GMT: グリニッジ標準時) 時刻が間違ったものになります。

出力の形式設定は、RWLocale オブジェクトを使用して行います。デフォルトのロケール形式は米国規約に準じます。

このクラスのデフォルトのコンストラクタは現在の日付と時間を持つインスタンスを作成するため、RWTime の大きな配列を作成するには時間がかかる場合があります。

RWTime v[5000];     // 現在の時間を 5000 回作成する

上記において、Tools.h++ テンプレートコレクションの C++ 標準ライブラリベースのバージョンを利用できる場合は、次のことに注意してください。

// 現在の時間を 1 回だけ作成する
RWTValOrderedVector<RWTime> v(5000, RWTime());
標準コレクションのすぐれた割り当て方法のおかげで、上記の宣言では、デフォルトのコンストラクタを 1 回だけ呼び出し、その後でコピーコンストラクタを 5000 回起動しています。RWDate の場合、コピーコンストラクタは 1 つの long を別の long に代入し、単純な配列よりも速く作成できるようになっています。

持続性

単純

この例は現在の時刻と、夏時間が 1990 年に始まった時刻を作成し、出力します。

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

main(){
 RWTime t;   //  現在の時刻
 RWTime d(RWTime::beginDST(1990, RWZone::local()));
   cout << "Current time:         " << RWDate(t) << " " << t <<
            endl;
   cout << "Start of DST, 1990:   " << RWDate(d) << " " << d <<
           endl;
}

プログラム出力

Current time:         03/22/91 15:01:40

Start of DST, 1990:   05/01/90 02:00:00

公開コンストラクタ

RWTime();

デフォルトコンストラクタ。現在の時刻で時刻を作成します。

RWTime(const RWTime&);

コピーコンストラクタ。

RWTime(unsigned long s);

1901 年 1 月 1 日 00:00:00UTC から経過した秒数 s で時刻を作成します。s==0 の場合、無効な時刻が作成されます。s が小さいと、タイムゾーンによっては 1901 年 1 月 1 日より前になることがあります。

RWTime(unsigned hour, unsigned minute, unsigned second=0,
       const RWZone& zone = RWZone::local());

今日の日付、およびタイムゾーン zone に対して指定した時、分、秒で時刻を作成します。デフォルトは現地時間です。

RWTime(const RWDate& date, unsigned hour = 0,
       unsigned minute = 0,unsigned second = 0,
       const RWZone& = RWZone::local());

タイムゾーン zone に対して指定した日付、時、分、秒で時刻を作成します。デフォルトは現地時間です。RWTime の最大値は、RWDate の最大値より前の時刻になります。(4 バイト long を使用するプラットフォームでは、2037 年 2 月 5 日になります) これは、RWTime が秒数でカウントするのに対して、RWDate は日数だけでカウントするからです。

RWTime(const struct tm*, const RWZone& = RWZone::local());

struct tm 引数の各要素 tm_yeartm_montm_mdaytm_hourtm_mintm_sec で時刻を作成します。これらの要素は、タイムゾーン zone (デフォルトは現地時間) に対して相対的であるとみなされます。struct tm における月、年の数え方は、RWTime 引数の場合とは異なります。

RWTime(const RWDate& date, const RWCString& str,
       const RWZone& zone = RWZone::local(),
       const RWLocale& locale = RWLocale::global());

文字列 str から引き出した時刻で、与えられた日付の時刻を作成します。文字列 str には時刻だけが含まれています。この時刻は、タイムゾーン zone (デフォルトは現時時間) に対して相対的であるとみなされます。指定したロケールをフォーマット情報に使用します。結果を検査するには、関数 isValid() を使用します。この関数では、時刻を表す文字列のすべてのエラーは検出できません。

公開メンバー演算子

RWTime&
operator=(const RWTime&);

代入演算子。

RWTime
operator++();

接頭辞インクリメント演算子。自分自身に 1 秒足し、その結果を返します。

RWTime
operator--();

接頭辞デクリメント演算子。自分自身から 1 秒引き、その結果を返します。

RWTime
operator++(int);

接尾インクリメント演算子。自分自身に 1 秒を足し、初期値を返します。

RWTime
operator--(int);

接尾デクリメント演算子。自分自身から 1 秒を引き、初期値を返します。

RWTime&
operator+=(unsigned long s);

自分自身に s 秒を足し、自分自身を返します。

RWTime&
operator-=(unsigned long s);

自分自身から s 秒を引き、自分自身を返します。

公開メンバー関数

RWCString
asString(char format = '\0',const RWZone& = RWZone::local(),
         const RWLocale& = RWLocale::global()) const;

自分自身を RWLocale 引数によってフォーマットした文字列 (RWZone 引数で調整したタイムゾーンを含む) として返します。この形式は、標準 C ライブラリ関数 strftime() によって定義します。デフォルトの形式では、日付の後ろに "%x %X" 形式の時刻が付きます。日付と時刻の正確な形式は、strtime() の実装により異なります。詳細は、RWLocale を参照してください。

RWCString
asString(char* format,const RWZone&   = RWZone::local(),
         const RWLocale& = RWLocale::global()) const;

RWLocale 引数によりフォーマットし、タイムゾーンを RWZone 引数にしたがって調整した文字列として自分自身を帰します。フォーマットは、標準 C ライブラリ関数 strftime() により定義されるとおりです。

RWBoolean
between(const RWTime& a, const RWTime& b) const;

RWtimeab (両端含む) の範囲内であれば、TRUE を返します。

size_t
binaryStoreSize() const;

次の大域関数を使用してオブジェクトを格納するのに必要なバイト数を返します。

    RWFile& operator<<(RWFile&, const RWTime&);
int
compareTo(const RWTime* t) const;

比較関数。時刻をソートするのに有効です。自分自身と t が指す RWtime とを比較して、次のような結果を返します。

0 自分自身が *t と等しい場合
1 自分自身が *t より大きい場合
-1 自分自身が *t より小さい場合

void
extract(struct tm*,const RWZone& = RWZone::local()) const;

RWZone 引数で指定したタイムゾーンに合わせて、struct tm 引数のメンバーをすべて設定します。時刻が間違っていれば、struct tm メンバーはすべて -1 に設定されます。ここでの struct tm メンバーのコード化は、RWTime および RWDate 関数を使用するときとは異なります。

unsigned
hash() const;

適切なハッシュ値を返します。

unsigned
hour(const RWZone& zone = RWZone::local()) const;

指定したタイムゾーンに合わせて調整した時間を返します。

unsigned
hourGMT() const;

UTC (GMT) の時間を返します。

RWBoolean
isDST(const RWZone& zone = RWZone::local()) const;

自分自身が zone で指定したタイムゾーンの夏時間内にあれば TRUE を、そうでなければ FALSE を返します。

RWBoolean
isValid() const;

有効な時刻であれば TRUE を、無効であれば FALSE を返します。

RWTime
max(const RWTime& t) const;

自分自身と t を比較し、後の方の時刻を返します。

RWTime
min(const RWTime& t) const;

自分自身と t を比較し、前の方の時刻を返します。

unsigned
minute(const RWZone& zone = RWZone::local()) const;

指定したタイムゾーンに合わせて調整した分を返します。

unsigned
minuteGMT() const;

UTC (GMT) で分を返します。

unsigned
second() const;

現地時間か UTC (GMT) で秒を返します。

unsigned long
seconds() const;

1901 年 1 月 1 日 00:00:00UTC から経過した秒数を返します。

静的公開メンバー関数

static RWTime
beginDST(unsigned year,

指定したタイムゾーンにおける指定した年の夏時間 (DST) の開始時刻を返します。夏時間が指定した年とタイムゾーンにないときは、「無効な時間」を返します。

static RWTime
endDST(unsigned year, const RWZone& = RWZone::local());

指定したタイムゾーンにおける指定した年の夏時間の終了時刻を返します。夏時間が指定した年とタイムゾーンにないときは、「無効な時間」を返します。

static unsigned
hash(const RWTime& t);

t.hash() が返す t のハッシュ値を返します。

static RWTime
now();

現在の時刻を返します。

関連の大域演算子

RWTime
operator+(const RWTime& t, unsigned long s);
RWTime
operator+(unsigned long s, const RWTime& t);

t より s 秒大きい RWTime を返します。

RWTime
operator-(const RWTime& t, unsigned long s);

t より s 秒小さい RWtime を返します。

RWBoolean
operator<(const RWTime& t1, const RWTime& t2);

t1t2 より小さいとき TRUE を返します。

RWBoolean
operator<=(const RWTime& t1, const RWTime& t2);

t1t2 と同じか、それより小さいとき TRUE を返します。

RWBoolean
operator>(const RWTime& t1, const RWTime& t2);

t1t2 より大きいとき TRUE を返します。

RWBoolean
operator>=(const RWTime& t1, const RWTime& t2);

t1t2 と同じか、それより大きいとき TRUE を返します。

RWBoolean
operator==(const RWTime& t1, const RWTime& t2);

t1t2 と同じとき TRUE を返します。

RWBoolean
operator!=(const RWTime& t1, const RWTime& t2);

t1t2 と同じでないとき TRUE を返します。

ostream&
operator<<(ostream& s, const RWTime& t);

ストリームに吹き込まれたロケールに従って、あるいは RWLocale::global() によって、ostream s に時刻 t を出力します (RWLocale を参照してください)。

RWvostream&
operator<<(RWvostream&, const RWTime& t);
RWFile&
operator<<(RWFile&,     const RWTime& t);

仮想ストリームまたは RWFileRWTime t を保存します。

RWvistream&
operator>>(RWvistream&, RWTime& t);
RWFile&
operator>>(RWFile&,     RWTime& t);

仮想ストリームまたは RWFile から t に、RWTime を復元し、t の以前の内容を書き換えます。