Declaration
class date_time;
Overview
C の struct tm をラップしたクラスです. boost::date_time を参考に演算子を定義しています.具体的には, 時刻 x の y 秒後を計算,2つの時刻 a,b の和・差を計算,2つの時刻 a,b の大小関係を比較する際に, + 演算子や - 演算子,比較演算子を用いて直感的に記述することができます.
時刻 x の z 時間後を計算したい場合には,対応する秒数を記述する代わりに x + clx::hours(z) と記述することができます.同様の関数として,years(),months(), days(),weeks(),hours(),minutes(),seconds() を定義しています.
尚,時刻の計算にはC 標準ライブラリの mktime() 関数を利用して計算しています.
Example
// example_date_time.cpp #include <iostream> #include "clx/format.h" #include "clx/time.h" int main(int argc, char* argv[]) { std::string fmt = "%a %d %b %Y %H:%M:%S JST"; /* * 現在時刻の取得. * デフォルトコンストラクタは,現在時刻でdate_timeクラスを初期化する. */ clx::date_time now; std::cout << clx::oftime(fmt, now) << std::endl; // 現在時刻から5年3ヶ月後の時刻を取得. clx::date_time t1 = now + clx::years(5) + clx::months(3); std::cout << "5 years 3 months later ... "; std::cout << clx::oftime(fmt, t1) << std::endl; std::cout << clx::format("%d days have passed since %d/01/01") % now.totaldays() % now.year() << std::endl; return 0; } Result Fri 02 Nov 2007 23:08:29 JST 5 years 3 months later ... Sat 02 Feb 2013 23:08:29 JST 305 days have passed since 2007/01/01
Related Types
typedef unsigned int value_type; typedef std::tm tm_type;
Constructions and Member Functions
date_time(); explicit date_time(const tm_type& t); explicit date_time(const std::time_t& t); explicit date_time(value_type& y, value_type& m, value_type& d, value_type& h, value_type& mm, value_type& s); value_type year() const; value_type month() const; value_type day() const; value_type hour() const; value_type min() const; value_type sec() const; value_type totaldays() const; date_time& now();
Operators
date_time& operator=(const date_time& t); date_time& operator=(const tm_type& t); date_time& operator=(const std::time_t& t); date_time& operator+=(value_type t); date_time& operator+=(const date_duration& t); date_time& operator-=(value_type t); date_time& operator-=(const date_duration& t); double operator-(const date_time& t) const; double operator-(const std::time_t& t) const; double operator-(const std::tm& t) const; friend date_time operator+(date_time x, value_type y); friend date_time operator+(date_time x, const date_duration& y); friend date_time operator-(date_time x, value_type y) friend date_time operator-(date_time x, const date_duration& y); friend date_time operator+(value_type y, date_time x); friend date_time operator+(const date_duration& y, date_time x); friend date_time operator-(value_type y, date_time x); friend date_time operator-(const date_duration& y, date_time x); friend bool operator<(const date_time& x, const date_time& y); friend bool operator>(const date_time& x, const date_time& y); friend bool operator<=(const date_time& x, const date_time& y); friend bool operator>=(const date_time& x, const date_time& y); friend bool operator==(const date_time& x, const date_time& y); friend bool operator!=(const date_time& x, const date_time& y);