51 #include <boost/date_time/posix_time/posix_time.hpp>
52 #include <boost/date_time/local_time/local_time.hpp>
53 #include <boost/date_time/c_local_time_adjustor.hpp>
68 typedef boost::gregorian::date
Date;
71 using boost::date_time::Jan;
72 using boost::date_time::Feb;
73 using boost::date_time::Mar;
74 using boost::date_time::Apr;
75 using boost::date_time::May;
76 using boost::date_time::Jun;
77 using boost::date_time::Jul;
78 using boost::date_time::Aug;
79 using boost::date_time::Sep;
80 using boost::date_time::Oct;
81 using boost::date_time::Nov;
82 using boost::date_time::Dec;
84 using boost::date_time::Monday;
85 using boost::date_time::Tuesday;
86 using boost::date_time::Wednesday;
87 using boost::date_time::Thursday;
88 using boost::date_time::Friday;
89 using boost::date_time::Saturday;
90 using boost::date_time::Sunday;
104 class Duration :
public boost::posix_time::time_duration
108 typedef boost::posix_time::time_duration
Base;
119 #if defined(BOOST_DATE_TIME_HAS_NANOSECONDS)
134 #if defined(BOOST_DATE_TIME_HAS_NANOSECONDS)
149 #if defined(BOOST_DATE_TIME_HAS_NANOSECONDS)
150 d.ticks_ = v * 1000000;
187 Duration(hour_type hour, min_type min, sec_type sec,
188 fractional_seconds_type fs=0) :
189 Base(hour, min, sec, fs)
203 Duration(
const boost::posix_time::special_values sv) :
207 #if !defined(DATE_TIME_NO_DEFAULT_CONSTRUCTOR)
211 #endif // DATE_TIME_NO_DEFAULT_CONSTRUCTOR
218 template<
typename Reflector>
225 template<
typename Reflector>
240 return Duration(boost::posix_time::neg_infin);
247 return Duration(boost::posix_time::pos_infin);
254 return Duration(boost::posix_time::not_a_date_time);
262 return !this->is_not_a_date_time();
269 return this->is_pos_infinity() || this->is_neg_infinity();
275 return Base::hours();
280 return Base::minutes();
285 return Base::seconds();
305 return Base::total_seconds();
310 return Base::total_milliseconds();
315 return Base::total_microseconds();
320 return Base::total_nanoseconds();
329 return Base::operator -();
333 return Base::operator-(d);
337 return Base::operator+(d);
341 assert(divisor != 0);
342 return Base::operator/(divisor);
346 assert(divisor != 0.0f);
348 d.ticks_ = (int64)(ticks_.as_number() / divisor);
357 return Base::operator-=(d);
361 return Base::operator+=(d);
366 assert(divisor != 0);
367 return Base::operator/=(divisor);
371 assert(divisor != 0.0f);
372 ticks_ = (int64)(ticks_.as_number() / divisor);
378 return Base::operator*(rhs);
383 d.ticks_ = (int64)(ticks_.as_number() * rhs);
388 return Base::operator*=(rhs);
392 ticks_ = (int64)(ticks_.as_number() * rhs);
406 if ( duration.is_negative() )
407 return duration.invert_sign();
425 typedef boost::posix_time::ptime
Base;
444 Time(
const Base::time_rep_type& rhs) :
448 Time(
const boost::posix_time::special_values sv) :
452 #if !defined(DATE_TIME_NO_DEFAULT_CONSTRUCTOR)
456 #endif // DATE_TIME_NO_DEFAULT_CONSTRUCTOR
462 template<
typename Reflector>
465 int64 t = toUnixNS();
469 template<
typename Reflector>
487 return boost::posix_time::microsec_clock::universal_time();
497 static Time eternity()
499 return Time(boost::posix_time::max_date_time);
507 return Time(boost::posix_time::not_a_date_time);
562 typedef boost::date_time::c_local_adjustor<Base> l;
563 return l::utc_to_local(*
this);
574 boost::local_time::time_zone_ptr tz(
new boost::local_time::posix_time_zone(zone));
575 boost::local_time::local_date_time dt(*
this, tz);
576 return dt.local_time();
585 return !this->is_not_a_date_time();
594 return Base::operator-(t);
598 return Base::operator+(d);
602 return Base::operator+=(d);
606 return Base::operator-(d);
610 return Base::operator-=(d);
614 return Base::operator+(d);
618 return Base::operator+=(d);
622 return Base::operator-(d);
626 return Base::operator-=(d);
631 template<
typename SerializerTag>
634 template<
typename SerializerTag>
641 template<
typename Reflector>
647 template<
typename Reflector>
654 template<typename SerializerTag>
void reflectWrite(Reflector &r, Buffer< T, Allocator > &c)
Specialization of the non-intrusive reflect for Buffer.
Definition: Buffer.h:581
uint32 toUnixTimestamp() const
Converts the current time to a unix timestamp in seconds.
Definition: Time.h:524
static Duration invalid()
Returns an invalid duration.
Definition: Time.h:252
tick_type totalMilliseconds() const
Returns total number of milliseconds truncating any fractional milliseconds.
Definition: Time.h:308
Time(const boost::posix_time::special_values sv)
Construct from special value.
Definition: Time.h:448
Typedefs for OS independent basic data types.
Duration operator*=(float rhs)
Definition: Time.h:390
Type trait that indicates whether a type should be serialized "transparently", i.e.
Definition: IsTransparentSerializable.h:81
bool isValid() const
Checks if this duration is invalid.
Definition: Time.h:260
Duration operator*=(int rhs)
Definition: Time.h:386
static Duration microseconds(int64 v)
Can be used to construct a Duration object that is specified in microseconds.
Definition: Time.h:132
#define MIRA_SPLIT_REFLECT(Type)
Macro that inserts a reflect() method consisting of just a call to splitReflect() (splitting to refle...
Definition: SplitReflect.h:154
Time(Date d)
Construct a time at start of the given day (midnight)
Definition: Time.h:439
Duration operator/(float divisor) const
Definition: Time.h:344
static Duration minutes(int32 v)
Can be used to construct a Duration object that is specified in minutes.
Definition: Time.h:177
static Duration nanoseconds(int64 v)
Can be used to construct a Duration object that is specified in nanoseconds.
Definition: Time.h:117
Time(Base p)
Construct from base class.
Definition: Time.h:435
Duration operator-(const Duration &d) const
Definition: Time.h:331
static Time fromUnixNS(uint64 nanoseconds)
Creates a time representation out of a unix timestamp.
Definition: Time.h:551
Duration operator+(const Duration &d) const
Definition: Time.h:335
Time operator+=(const DateDuration &d)
Definition: Time.h:600
uint64 toUnixNS() const
Converts the current time to a unix timestamp in nanoseconds.
Definition: Time.h:542
Duration operator/(int divisor) const
Definition: Time.h:339
Duration()
Default constructor constructs to Duration of 0 length.
Definition: Time.h:209
Time operator-=(const Duration &d)
Definition: Time.h:624
#define MIRA_SPLIT_REFLECT_MEMBER
Macro that insert a class member reflect() method just splitting reflection into a reflectRead() and ...
Definition: SplitReflect.h:238
hour_type hours() const
Returns number of hours in the duration.
Definition: Time.h:273
tick_type totalNanoseconds() const
Returns total number of nanoseconds truncating any fractional nanoseconds.
Definition: Time.h:318
bool isValid() const
Returns true if this contains a valid time.
Definition: Time.h:583
Duration(const Duration &d)
Construct from duration.
Definition: Time.h:193
Duration operator/=(int divisor)
Division operations on a duration with an integer.
Definition: Time.h:364
Provides type trait that indicates whether a type should be serialized "transparently".
Provides MIRA_SPLIT_REFLECT macros.
static Time unixEpoch()
Returns the unix epoch 1.1.1970 0:0:0.000.
Definition: Time.h:514
tick_type milliseconds() const
Returns normalized number of milliseconds (0..999)
Definition: Time.h:288
Duration(const boost::posix_time::special_values sv)
Construct from special value.
Definition: Time.h:203
boost::posix_time::ptime Base
Definition: Time.h:425
Time toLocal() const
Converts to local time zone based on the settings of the machine.
Definition: Time.h:560
Wrapper class for boost::posix_time::ptime for adding more functionality to it.
Definition: Time.h:421
Time operator-(const Duration &d) const
Definition: Time.h:620
static Duration hours(int32 v)
Can be used to construct a Duration object that is specified in hours.
Definition: Time.h:184
Duration abs(const Duration &duration)
Get the absolute duration from a duration.
Definition: Time.h:404
Time operator+(const DateDuration &d) const
Definition: Time.h:596
Duration operator-() const
Definition: Time.h:327
Time operator+(const Duration &d) const
Definition: Time.h:612
boost::posix_time::time_duration Base
Definition: Time.h:108
static Duration seconds(int32 v)
Can be used to construct a Duration object that is specified in seconds.
Definition: Time.h:170
Duration operator*(float rhs) const
Definition: Time.h:380
Duration operator-=(const Duration &d)
Definition: Time.h:355
bool isInfinity() const
Checks if this duration is infinity.
Definition: Time.h:267
Use this class to represent time durations.
Definition: Time.h:104
boost::gregorian::date_duration DateDuration
Definition: Time.h:69
Time(Date d, Duration td)
Construct from date and timespan.
Definition: Time.h:430
tick_type nanoseconds() const
Returns normalized number of nanoseconds (0..999)
Definition: Time.h:298
boost::gregorian::date Date
Typedef for the boost Gregorian calendar date.
Definition: Time.h:68
sec_type seconds() const
Returns normalized number of seconds (0..59)
Definition: Time.h:283
MIRA_SPLIT_REFLECT_MEMBER void reflectRead(Reflector &r)
Definition: Time.h:463
static Duration infinity()
Returns a special duration time representing positive infinity.
Definition: Time.h:245
static Duration negativeInfinity()
Returns a special duration time representing negative infinity.
Definition: Time.h:238
Duration operator+=(const Duration &d)
Definition: Time.h:359
Duration operator-(const Time &t) const
Definition: Time.h:592
tick_type totalMicroseconds() const
Returns total number of microseconds truncating any fractional microseconds.
Definition: Time.h:313
Time toTimeZone(const std::string &zone)
Converts to given time zone.
Definition: Time.h:572
Duration(hour_type hour, min_type min, sec_type sec, fractional_seconds_type fs=0)
Definition: Time.h:187
Time(const Base::time_rep_type &rhs)
Construct from time representation.
Definition: Time.h:444
void reflectRead(Reflector &r, Buffer< T, Allocator > &c)
Specialization of the non-intrusive reflect for Buffer.
Definition: Buffer.h:565
min_type minutes() const
Returns normalized number of minutes (0..59)
Definition: Time.h:278
static Time now() static Time eternity()
Returns the current utc based time.
Definition: Time.h:484
static Time invalid()
Returns an invalid time.
Definition: Time.h:505
Duration operator*(int rhs) const
Multiplication operations an a duration with an integer.
Definition: Time.h:376
Duration(Base d)
Construct from base class.
Definition: Time.h:198
static Duration milliseconds(int64 v)
Can be used to construct a Duration object that is specified in milliseconds.
Definition: Time.h:147
Time operator+=(const Duration &d)
Definition: Time.h:616
sec_type totalSeconds() const
Returns total number of seconds truncating any fractional seconds.
Definition: Time.h:303
Duration operator/=(float divisor)
Definition: Time.h:369
void reflectWrite(Reflector &r)
Definition: Time.h:470
void reflectWrite(Reflector &r)
Definition: Time.h:226
float operator/(Duration other) const
Definition: Time.h:351
static Time fromUnixTimestamp(uint32 seconds)
Creates a time representation out of a unix timestamp.
Definition: Time.h:533
tick_type microseconds() const
Returns normalized number of microseconds (0..999)
Definition: Time.h:293
Time operator-=(const DateDuration &d)
Definition: Time.h:608
Time operator-(const DateDuration &d) const
Definition: Time.h:604
MIRA_SPLIT_REFLECT_MEMBER void reflectRead(Reflector &r)
Reflect.
Definition: Time.h:219