Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWTime

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

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_year`、`tm_mon`、`tm_mday`、`tm_hour`、`tm_min`、`tm_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;

    `RWtime` が `a` 〜 `b` (両端含む) の範囲内であれば、`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);

    `t1` が `t2` より小さいとき `TRUE` を返します。

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

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

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

    `t1` が `t2` より大きいとき `TRUE` を返します。

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

    `t1` が `t2` と同じか、それより大きいとき `TRUE` を返します。

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

    `t1` が `t2` と同じとき `TRUE` を返します。

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

    `t1` が `t2` と同じでないとき `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);

    仮想ストリームまたは `RWFile` に `RWTime t` を保存します。

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

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