AceTime  1.7.3
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
ace_time::TimePeriod Class Reference

Represents a period of time relative to some known point in time, potentially represented by a DateTime. More...

#include <TimePeriod.h>

Public Member Functions

 TimePeriod (uint8_t hour, uint8_t minute, uint8_t second, int8_t sign=1)
 Constructor. More...
 
 TimePeriod (int32_t seconds=0)
 Constructor from number of seconds. More...
 
uint8_t hour () const
 Return the hour.
 
void hour (uint8_t hour)
 Set the hour. More...
 
uint8_t minute () const
 Return the minute.
 
void minute (uint8_t minute)
 Set the minute. More...
 
uint8_t second () const
 Return the second.
 
void second (uint8_t second)
 Set the second. More...
 
int8_t sign () const
 Return the sign bit.
 
void sign (int8_t sign)
 Set the sign bit. More...
 
int32_t toSeconds () const
 Convert to number of seconds. More...
 
bool isError () const
 Return true if this represents an error.
 
int8_t compareTo (const TimePeriod &that) const
 Compare 'this' TimePeriod with 'that' TimePeriod and return (<0, 0, >0) according to (this<that, this==that, this>that). More...
 
void printTo (Print &printer) const
 Print to given printer. More...
 
 TimePeriod (const TimePeriod &)=default
 
TimePeriodoperator= (const TimePeriod &)=default
 

Static Public Member Functions

static TimePeriod forError ()
 Factory method that creates a TimePeriod representing an error so that isError() returns true.
 

Static Public Attributes

static const int32_t kInvalidPeriodSeconds = INT32_MIN
 An invalid time period seconds.
 
static const int32_t kMaxPeriodSeconds = 921599
 The largest period that can be represented by this class, in seconds. More...
 

Friends

bool operator== (const TimePeriod &a, const TimePeriod &b)
 Return true if two TimePeriod objects are equal. More...
 

Detailed Description

Represents a period of time relative to some known point in time, potentially represented by a DateTime.

Each component (hour, minute, second) is stored as an unsigned byte (uint8_t). The sign bit allows forward and backward time periods to be represented.

Definition at line 21 of file TimePeriod.h.

Constructor & Destructor Documentation

◆ TimePeriod() [1/2]

ace_time::TimePeriod::TimePeriod ( uint8_t  hour,
uint8_t  minute,
uint8_t  second,
int8_t  sign = 1 
)
inlineexplicit

Constructor.

Parameters
hourhour (0-255)
minuteminute (0-59)
secondsecond (0-59)
signThe sign bit. Should be either +1 or -1. Any other value may cause the isError() method to return true.

Definition at line 49 of file TimePeriod.h.

◆ TimePeriod() [2/2]

ace_time::TimePeriod::TimePeriod ( int32_t  seconds = 0)
inlineexplicit

Constructor from number of seconds.

The largest valid 'seconds' is +/- 921599 corresponding to (hour=255, minute=59, second=59). For larger number or smaller number, an error object will be returned whose isError() returns true.

Parameters
secondsnumber of seconds (default 0)

Definition at line 64 of file TimePeriod.h.

Member Function Documentation

◆ compareTo()

int8_t ace_time::TimePeriod::compareTo ( const TimePeriod that) const
inline

Compare 'this' TimePeriod with 'that' TimePeriod and return (<0, 0, >0) according to (this<that, this==that, this>that).

If either 'this' or 'that' returns true for isError(), then the result is undefined.

Definition at line 135 of file TimePeriod.h.

◆ hour()

void ace_time::TimePeriod::hour ( uint8_t  hour)
inline

Set the hour.

Should be between [0, 255]. No error checking is done.

Definition at line 88 of file TimePeriod.h.

◆ minute()

void ace_time::TimePeriod::minute ( uint8_t  minute)
inline

Set the minute.

Should be between [0, 59]. No error checking is done.

Definition at line 94 of file TimePeriod.h.

◆ printTo()

void ace_time::TimePeriod::printTo ( Print &  printer) const

Print to given printer.

If the time period is negative, a minus sign is prepended. If the TimePeriod is an error, the string "<Invalid TimePeriod>" is printed.

This class does not implement the Printable interface to avoid increasing the size of the object from the additional virtual function.

Definition at line 14 of file TimePeriod.cpp.

◆ second()

void ace_time::TimePeriod::second ( uint8_t  second)
inline

Set the second.

Should be between [0, 59]. No error checking is done.

Definition at line 100 of file TimePeriod.h.

◆ sign()

void ace_time::TimePeriod::sign ( int8_t  sign)
inline

Set the sign bit.

Should be either +1 or -1. Any other value may cause isError() to return true.

Definition at line 109 of file TimePeriod.h.

◆ toSeconds()

int32_t ace_time::TimePeriod::toSeconds ( ) const
inline

Convert to number of seconds.

For a normal TimePeriod, the maximum and minimum values are +kMaxPeriodSeconds or -kMaxPeriodSeconds. If isError() is true, this returns kInvalidPeriodSeconds.

Definition at line 116 of file TimePeriod.h.

Friends And Related Function Documentation

◆ operator==

bool operator== ( const TimePeriod a,
const TimePeriod b 
)
friend

Return true if two TimePeriod objects are equal.

Optimized for small changes in the less signficant fields.

Definition at line 182 of file TimePeriod.h.

Member Data Documentation

◆ kMaxPeriodSeconds

const int32_t ace_time::TimePeriod::kMaxPeriodSeconds = 921599
static

The largest period that can be represented by this class, in seconds.

The same limit applies in the positive and negative direction.

Definition at line 30 of file TimePeriod.h.


The documentation for this class was generated from the following files: