Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Class template period

boost::date_time::period — Provides generalized period type useful in date-time systems.

Synopsis

// In header: <boost/date_time/period.hpp>

template<typename point_rep, typename duration_rep> 
class period : private  {
public:
  // types
  typedef     ;   
  typedef  ;

  // construct/copy/destruct
  (, );
  (, );

  // public member functions
   () ;
   () ;
   () ;
   () ;
   () ;
   (period &) ;
   (period &) ;
   ();
   ();
   () ;
   (period &) ;
   (period &) ;
   (period &) ;
   () ;
   () ;
  period (period &) ;
  period (period &) ;
  period (period &) ;
};

Description

This template uses a class to represent a time point within the period and another class to represent a duration. As a result, this class is not appropriate for use when the number and duration representation are the same (eg: in the regular number domain).

A period can be specified by providing either the begining point and a duration or the begining point and the end point( end is NOT part of the period but 1 unit past it. A period will be "invalid" if either end_point <= begin_point or the given duration is <= 0. Any valid period will return false for is_null().

Zero length periods are also considered invalid. Zero length periods are periods where the begining and end points are the same, or, the given duration is zero. For a zero length period, the last point will be one unit less than the begining point.

In the case that the begin and last are the same, the period has a length of one unit.

The best way to handle periods is usually to provide a begining point and a duration. So, day1 + 7 days is a week period which includes all of the first day and 6 more days (eg: Sun to Sat).

period public construct/copy/destruct

  1. ( first_point,  end_point);
    create a period from begin to last eg: [begin,end)

    If end <= begin then the period will be invalid

  2. ( first_point,  len);
    create a period as [begin, begin+len)

    If len is <= 0 then the period will be invalid

period public member functions

  1.  () ;
    Return the first element in the period.
  2.  () ;
    Return one past the last element.
  3.  () ;
    Return the last item in the period.
  4.  () ;
    Return the length of the period.
  5.  () ;
    True if period is ill formed (length is zero or less)
  6.  (period & rhs) ;
    Equality operator.
  7.  (period & rhs) ;
    Strict as defined by rhs.last <= lhs.last.
  8.  ( d);
    Shift the start and end by the specified amount.
  9.  ( d);

    Expands the size of the period by the duration on both ends.

    So before expand

            [-------]
    ^   ^   ^   ^   ^   ^  ^
    

    After expand(2)

    [----------------------]
    ^   ^   ^   ^   ^   ^  ^
    

  10.  ( point) ;
    True if the point is inside the period, zero length periods contain no points.
  11.  (period & other) ;
    True if this period fully contains (or equals) the other period.
  12.  (period & other) ;
    True if the periods overlap in any way.
  13.  (period & other) ;
    True if periods are next to each other without a gap.
  14.  ( point) ;
    True if all of the period is prior to the passed point or end <= t.
  15.  ( point) ;
    True if all of the period is prior or t < start.
  16. period (period & other) ;
    Returns the period of intersection or invalid range no intersection.
  17. period (period & other) ;
    Returns the union of intersecting periods – or null period.
  18. period (period & other) ;
    Combine two periods with earliest start and latest end.

    Combines two periods and any gap between them such that start = min(p1.start, p2.start) end = max(p1.end , p2.end)

           [---


PrevUpHomeNext