AceTime
3.0.0
Date and time classes for Arduino that support timezones from the TZ Database.
|
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. More... | |
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 | |
TimePeriod & | operator= (const TimePeriod &)=default |
Static Public Member Functions | |
static TimePeriod | forError (int8_t sign=0) |
Factory method that creates a TimePeriod representing a generic error so that isError() returns true. More... | |
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, corresponding to +/- 255h59m59s. More... | |
Friends | |
bool | operator== (const TimePeriod &a, const TimePeriod &b) |
Return true if two TimePeriod objects are equal. More... | |
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.
There are 3 conditions which return isError() true:
Definition at line 27 of file TimePeriod.h.
|
inlineexplicit |
Constructor.
No input validation or normalization is performed by this constructor.
hour | hour (0-255) |
minute | minute (0-59) |
second | second (0-59) |
sign | The sign bit. Should be either +1 or -1. Any other value may cause the isError() method to return true. |
Definition at line 60 of file TimePeriod.h.
|
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 values, an error object will be returned whose isError() returns true.
seconds | number of seconds (default 0) |
Definition at line 75 of file TimePeriod.h.
|
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 162 of file TimePeriod.h.
|
inlinestatic |
Factory method that creates a TimePeriod representing a generic error so that isError() returns true.
sign | optional sign value which indicates generic error (0, default), overflow (1), or underflow (-1). |
Definition at line 46 of file TimePeriod.h.
|
inline |
Set the hour.
Should be between [0, 255]. No error checking is done.
Definition at line 107 of file TimePeriod.h.
|
inline |
Return true if this represents an error.
Check the sign() value to descriminate the 3 different error conditions:
Definition at line 153 of file TimePeriod.h.
|
inline |
Set the minute.
Should be between [0, 59]. No error checking is done.
Definition at line 113 of file TimePeriod.h.
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, prints the following:
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.
|
inline |
Set the second.
Should be between [0, 59]. No error checking is done.
Definition at line 119 of file TimePeriod.h.
|
inline |
Set the sign bit.
Should be either +1 or -1. Setting it to 0 causes isError() to return true, to indicate a generic error condition. Any other value caused undefined behavior.
Definition at line 129 of file TimePeriod.h.
|
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 136 of file TimePeriod.h.
|
friend |
Return true if two TimePeriod objects are equal.
Optimized for small changes in the less signficant fields.
Definition at line 211 of file TimePeriod.h.
|
static |
The largest period that can be represented by this class, in seconds, corresponding to +/- 255h59m59s.
The same limit applies in the positive and negative direction.
Definition at line 37 of file TimePeriod.h.