#include <bdlt_datetimeinterval.h>
|
| DatetimeInterval () |
| Create a time interval object having the value 0.
|
|
| DatetimeInterval (int days, bsls::Types::Int64 hours=0, bsls::Types::Int64 minutes=0, bsls::Types::Int64 seconds=0, bsls::Types::Int64 milliseconds=0, bsls::Types::Int64 microseconds=0) |
|
| DatetimeInterval (const DatetimeInterval &original) |
|
| ~DatetimeInterval ()=default |
|
DatetimeInterval & | operator= (const DatetimeInterval &rhs) |
|
DatetimeInterval & | operator+= (const DatetimeInterval &rhs) |
|
DatetimeInterval & | operator-= (const DatetimeInterval &rhs) |
|
void | setInterval (int days, bsls::Types::Int64 hours=0, bsls::Types::Int64 minutes=0, bsls::Types::Int64 seconds=0, bsls::Types::Int64 milliseconds=0, bsls::Types::Int64 microseconds=0) |
|
int | setIntervalIfValid (int days, bsls::Types::Int64 hours=0, bsls::Types::Int64 minutes=0, bsls::Types::Int64 seconds=0, bsls::Types::Int64 milliseconds=0, bsls::Types::Int64 microseconds=0) |
|
void | setTotalDays (int days) |
|
void | setTotalHours (bsls::Types::Int64 hours) |
|
int | setTotalHoursIfValid (bsls::Types::Int64 hours) |
|
void | setTotalMinutes (bsls::Types::Int64 minutes) |
|
int | setTotalMinutesIfValid (bsls::Types::Int64 minutes) |
|
void | setTotalSeconds (bsls::Types::Int64 seconds) |
|
int | setTotalSecondsIfValid (bsls::Types::Int64 seconds) |
|
void | setTotalSecondsFromDouble (double seconds) |
|
int | setTotalSecondsFromDoubleIfValid (double seconds) |
|
void | setTotalMilliseconds (bsls::Types::Int64 milliseconds) |
|
int | setTotalMillisecondsIfValid (bsls::Types::Int64 milliseconds) |
|
void | setTotalMicroseconds (bsls::Types::Int64 microseconds) |
|
DatetimeInterval & | addInterval (int days, bsls::Types::Int64 hours=0, bsls::Types::Int64 minutes=0, bsls::Types::Int64 seconds=0, bsls::Types::Int64 milliseconds=0, bsls::Types::Int64 microseconds=0) |
|
int | addIntervalIfValid (int days, bsls::Types::Int64 hours=0, bsls::Types::Int64 minutes=0, bsls::Types::Int64 seconds=0, bsls::Types::Int64 milliseconds=0, bsls::Types::Int64 microseconds=0) |
|
DatetimeInterval & | addDays (int days) |
|
int | addDaysIfValid (int days) |
|
DatetimeInterval & | addHours (bsls::Types::Int64 hours) |
|
int | addHoursIfValid (bsls::Types::Int64 hours) |
|
DatetimeInterval & | addMinutes (bsls::Types::Int64 minutes) |
|
int | addMinutesIfValid (bsls::Types::Int64 minutes) |
|
DatetimeInterval & | addSeconds (bsls::Types::Int64 seconds) |
|
int | addSecondsIfValid (bsls::Types::Int64 seconds) |
|
DatetimeInterval & | addMilliseconds (bsls::Types::Int64 milliseconds) |
|
int | addMillisecondsIfValid (bsls::Types::Int64 milliseconds) |
|
DatetimeInterval & | addMicroseconds (bsls::Types::Int64 microseconds) |
|
int | addMicrosecondsIfValid (bsls::Types::Int64 microseconds) |
|
template<class STREAM > |
STREAM & | bdexStreamIn (STREAM &stream, int version) |
|
int | days () const |
|
bsls::Types::Int64 | fractionalDayInMicroseconds () const |
|
int | hours () const |
|
int | minutes () const |
|
int | seconds () const |
|
int | milliseconds () const |
|
int | microseconds () const |
|
int | printToBuffer (char *result, int numBytes, int fractionalSecondPrecision=6) const |
|
int | totalDays () const |
|
bsls::Types::Int64 | totalHours () const |
|
bsls::Types::Int64 | totalMinutes () const |
|
bsls::Types::Int64 | totalSeconds () const |
|
double | totalSecondsAsDouble () const |
|
bsls::Types::Int64 | totalMilliseconds () const |
|
bsls::Types::Int64 | totalMicroseconds () const |
|
template<class STREAM > |
STREAM & | bdexStreamOut (STREAM &stream, int version) const |
|
bsl::ostream & | print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const |
|
bsl::ostream & | streamOut (bsl::ostream &stream) const |
|
Each object of this class represents a (signed) time interval with microsecond resolution. See {The Representation of a Time Interval} for details.
See bdlt_datetimeinterval
◆ DatetimeInterval() [1/3]
bdlt::DatetimeInterval::DatetimeInterval |
( |
| ) |
|
|
inline |
◆ DatetimeInterval() [2/3]
Create a time interval object having the value given by the specified days
, and the optionally specified hours
, minutes
, seconds
, milliseconds
, and microseconds
. Unspecified arguments default to 0. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer). Note that the arguments may be supplied using a mixture of positive, negative, and 0 values.
◆ DatetimeInterval() [3/3]
Create a time interval object having the value of the specified original
time interval.
◆ ~DatetimeInterval()
bdlt::DatetimeInterval::~DatetimeInterval |
( |
| ) |
|
|
default |
◆ addDays()
Add to this time interval the specified number of days
, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ addDaysIfValid()
int bdlt::DatetimeInterval::addDaysIfValid |
( |
int |
days | ) |
|
|
inline |
Add to this time interval the specified number of days
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ addHours()
Add to this time interval the specified number of hours
, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ addHoursIfValid()
Add to this time interval the specified number of hours
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ addInterval()
Add to this time interval the specified number of days
, and the optionally specified number of hours
, minutes
, seconds
, milliseconds
, and microseconds
, and return a reference providing modifiable access to this object. Unspecified arguments default to 0. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer). Note that the arguments may be supplied using a mixture of positive, negative, and 0 values.
◆ addIntervalIfValid()
Add to this time interval the specified number of days
, and the optionally specified number of hours
, minutes
, seconds
, milliseconds
, and microseconds
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise. Note that the arguments may be supplied using a mixture of positive, negative, and 0 values.
◆ addMicroseconds()
Add to this time interval the specified number of microseconds
, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ addMicrosecondsIfValid()
Add to this time interval the specified number of microseconds
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ addMilliseconds()
Add to this time interval the specified number of milliseconds
, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ addMillisecondsIfValid()
Add to this time interval the specified number of milliseconds
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ addMinutes()
Add to this time interval the specified number of minutes
, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ addMinutesIfValid()
Add to this time interval the specified number of minutes
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ addSeconds()
Add to this time interval the specified number of seconds
, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ addSecondsIfValid()
Add to this time interval the specified number of seconds
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ bdexStreamIn()
template<class STREAM >
STREAM & bdlt::DatetimeInterval::bdexStreamIn |
( |
STREAM & |
stream, |
|
|
int |
version |
|
) |
| |
Assign to this object the value read from the specified input stream
using the specified version
format, and return a reference to stream
. If stream
is initially invalid, this operation has no effect. If version
is not supported, this object is unaltered and stream
is invalidated, but otherwise unmodified. If version
is supported but stream
becomes invalid during this operation, this object has an undefined, but valid, state. Note that no version is read from stream
. See the bslx
package-level documentation for more information on BDEX streaming of value-semantic types and containers.
◆ bdexStreamOut()
template<class STREAM >
STREAM & bdlt::DatetimeInterval::bdexStreamOut |
( |
STREAM & |
stream, |
|
|
int |
version |
|
) |
| const |
Write the value of this object, using the specified version
format, to the specified output stream
, and return a reference to stream
. If stream
is initially invalid, this operation has no effect. If version
is not supported, stream
is invalidated, but otherwise unmodified. Note that version
is not written to stream
. See the bslx
package-level documentation for more information on BDEX streaming of value-semantic types and containers.
◆ days()
int bdlt::DatetimeInterval::days |
( |
| ) |
const |
|
inline |
Return the days field in the canonical representation of the value of this time interval. Note that the return value may be negative. Also note that the return value is the same as that returned by totalDays
.
◆ fractionalDayInMicroseconds()
Return the value of this time interval as an integral number of microseconds modulo the number of microseconds in a day. Note that the return value may be negative.
◆ hours()
int bdlt::DatetimeInterval::hours |
( |
| ) |
const |
|
inline |
Return the hours field in the canonical representation of the value of this time interval. Note that the return value may be negative.
◆ isValid()
Return true
if a time interval object having the value given by the specified days
, and the optionally specified hours
, minutes
, seconds
, milliseconds
, and microseconds
can be represented as a DatetimeInterval
and false
otherwise. Unspecified arguments default to 0. The resulting time interval value is valid if the days field does not overflow a 32-bit integer. Note that the arguments may be supplied using a mixture of positive, negative, and 0 values.
◆ maxSupportedBdexVersion() [1/2]
int bdlt::DatetimeInterval::maxSupportedBdexVersion |
( |
| ) |
|
|
inlinestatic |
◆ maxSupportedBdexVersion() [2/2]
int bdlt::DatetimeInterval::maxSupportedBdexVersion |
( |
int |
versionSelector | ) |
|
|
inlinestatic |
Return the maximum valid BDEX format version, as indicated by the specified versionSelector
, to be passed to the bdexStreamOut
method. Note that it is highly recommended that versionSelector
be formatted as "YYYYMMDD", a date representation. Also note that versionSelector
should be a compile-time-chosen value that selects a format version supported by both externalizer and unexternalizer. See the bslx
package-level documentation for more information on BDEX streaming of value-semantic types and containers.
◆ maxSupportedVersion()
int bdlt::DatetimeInterval::maxSupportedVersion |
( |
| ) |
|
|
inlinestatic |
◆ microseconds()
int bdlt::DatetimeInterval::microseconds |
( |
| ) |
const |
|
inline |
Return the microseconds field in the canonical representation of the value of this time interval. Note that the return value may be negative.
◆ milliseconds()
int bdlt::DatetimeInterval::milliseconds |
( |
| ) |
const |
|
inline |
Return the milliseconds field in the canonical representation of the value of this time interval. Note that the return value may be negative.
◆ minutes()
int bdlt::DatetimeInterval::minutes |
( |
| ) |
const |
|
inline |
Return the minutes field in the canonical representation of the value of this time interval. Note that the return value may be negative.
◆ operator+=()
Add to this time interval the value of the specified rhs
time interval, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ operator-=()
Subtract from this time interval the value of the specified rhs
time interval, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ operator=()
Assign to this object the value of the specified rhs
time interval, and return a reference providing modifiable access to this object.
◆ print()
bsl::ostream & bdlt::DatetimeInterval::print |
( |
bsl::ostream & |
stream, |
|
|
int |
level = 0 , |
|
|
int |
spacesPerLevel = 4 |
|
) |
| const |
Write the value of this object to the specified output stream
in a human-readable format, and return a reference to stream
. Optionally specify an initial indentation level
, whose absolute value is incremented recursively for nested objects. If level
is specified, optionally specify spacesPerLevel
, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level
is negative, suppress indentation of the first line. If spacesPerLevel
is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level
). If stream
is not valid on entry, this operation has no effect. Note that the format is not fully specified, and can change without notice.
◆ printToBuffer()
int bdlt::DatetimeInterval::printToBuffer |
( |
char * |
result, |
|
|
int |
numBytes, |
|
|
int |
fractionalSecondPrecision = 6 |
|
) |
| const |
Efficiently write to the specified result
buffer no more than the specified numBytes
of a representation of the value of this object. Optionally specify fractionalSecondPrecision
digits to indicate how many fractional second digits to output. If fractionalSecondPrecision
is not specified then 6 fractional second digits will be output (3 digits for milliseconds and 3 digits for microseconds). Return the number of characters (not including the null character) that would have been written if the limit due to numBytes
were not imposed. result
is null-terminated unless numBytes
is 0. The behavior is undefined unless 0 <= numBytes
, 0 <= fractionalSecondPrecision <= 6
, and result
refers to at least numBytes
contiguous bytes. Note that the return value is greater than or equal to numBytes
if the output representation was truncated to avoid result
overrun.
◆ seconds()
int bdlt::DatetimeInterval::seconds |
( |
| ) |
const |
|
inline |
Return the seconds field in the canonical representation of the value of this time interval. Note that the return value may be negative.
◆ setInterval()
Set the time interval represented by this object to the value given by the specified days
, and the optionally specified hours
, minutes
, seconds
, milliseconds
, and microseconds
. Unspecified arguments default to 0. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer). Note that the arguments may be supplied using a mixture of positive, negative, and 0 values.
◆ setIntervalIfValid()
Set the time interval represented by this object to the value given by the specified days
, and the optionally specified hours
, minutes
, seconds
, milliseconds
, and microseconds
. Unspecified arguments default to 0. Return 0 if the resulting time interval value is valid (i.e., the days
field must not overflow an int
) and a non-zero value (with no effect) otherwise. Note that the arguments may be supplied using a mixture of positive, negative, and 0 values.
◆ setTotalDays()
void bdlt::DatetimeInterval::setTotalDays |
( |
int |
days | ) |
|
|
inline |
Set the overall value of this object to indicate the specified number of days
.
◆ setTotalHours()
Set the overall value of this object to indicate the specified number of hours
. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ setTotalHoursIfValid()
Set the overall value of this object to indicate the specified number of hours
. Return 0 if the resulting time interval value is valid (i.e., the days
field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ setTotalMicroseconds()
Set the overall value of this object to indicate the specified number of microseconds
. Note that there is no setTotalMicrosecondsIfValid
because no value of microseconds
can cause the number of days to overflow.
◆ setTotalMilliseconds()
Set the overall value of this object to indicate the specified number of milliseconds
. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ setTotalMillisecondsIfValid()
int bdlt::DatetimeInterval::setTotalMillisecondsIfValid |
( |
bsls::Types::Int64 |
milliseconds | ) |
|
|
inline |
Set the overall value of this object to indicate the specified number of milliseconds
. Return 0 if the resulting time interval value is valid (i.e., the days field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ setTotalMinutes()
Set the overall value of this object to indicate the specified number of minutes
. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ setTotalMinutesIfValid()
Set the overall value of this object to indicate the specified number of minutes
. Return 0 if the resulting time interval value is valid (i.e., the days
field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ setTotalSeconds()
Set the overall value of this object to indicate the specified number of seconds
. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ setTotalSecondsFromDouble()
void bdlt::DatetimeInterval::setTotalSecondsFromDouble |
( |
double |
seconds | ) |
|
Set the overall value of this object to indicate the specified number of seconds
. The fractional part of seconds
, if any, is rounded to the nearest whole number of microseconds. The behavior is undefined unless the resulting time interval value is valid (i.e., the days field must not overflow a 32-bit integer).
◆ setTotalSecondsFromDoubleIfValid()
int bdlt::DatetimeInterval::setTotalSecondsFromDoubleIfValid |
( |
double |
seconds | ) |
|
Set the overall value of this object to indicate the specified number of seconds
. The fractional part of seconds
, if any, is rounded to the nearest whole number of microseconds. Return 0 if the resulting time interval value is valid (i.e., the days
field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ setTotalSecondsIfValid()
Set the overall value of this object to indicate the specified number of seconds
. Return 0 if the resulting time interval value is valid (i.e., the days
field must not overflow an int
) and a non-zero value (with no effect) otherwise.
◆ streamOut()
bsl::ostream & bdlt::DatetimeInterval::streamOut |
( |
bsl::ostream & |
stream | ) |
const |
- Deprecated:
- use
operator<<
or print
instead.
Format this datetime interval to the specified output stream
, and return a reference to stream
.
◆ totalDays()
int bdlt::DatetimeInterval::totalDays |
( |
| ) |
const |
|
inline |
Return the value of this time interval in integral days, rounded toward 0. Note that the return value may be negative. Also note that the return value is the same as that returned by days
.
◆ totalHours()
Return the value of this time interval in integral hours, rounded toward 0. Note that the return value may be negative.
◆ totalMicroseconds()
Return the value of this time interval as an integral number of microseconds. The behavior is undefined unless the number of microseconds can be represented with a 64-bit signed integer. Note that the return value may be negative.
◆ totalMilliseconds()
Return the value of this time interval in integral milliseconds, rounded towards zero. Note that the return value may be negative.
◆ totalMinutes()
Return the value of this time interval in integral minutes, rounded toward 0. Note that the return value may be negative.
◆ totalSeconds()
Return the value of this time interval in integral seconds, rounded toward 0. Note that the return value may be negative.
◆ totalSecondsAsDouble()
double bdlt::DatetimeInterval::totalSecondsAsDouble |
( |
| ) |
const |
|
inline |
Return the value of this time interval in seconds as a double
, potentially with a fractional part. Note that the return value may be negative. Also note that the conversion from the internal representation to double
may lose precision.
◆ hashAppend
Pass the specified object
to the specified hashAlg
. This function integrates with the bslh
modular hashing system and effectively provides a bsl::hash
specialization for DatetimeInterval
.
◆ operator!=
Return true
if the specified lhs
and rhs
time intervals do not have the same value, and false
otherwise. Two time intervals do not have the same value if any of the corresponding values of their days, hours, minutes, seconds, milliseconds, or microseconds fields is not the same.
◆ operator-
Return a DatetimeInterval
object whose value is the negative of the specified time interval value
. The behavior is undefined unless INT_MIN < value.days()
.
◆ operator<
Return true
if the nominal relation between the specified lhs
and rhs
time interval values holds, and false
otherwise. lhs
is less than rhs
if the following expression evaluates to true
:
lhs.days() < rhs.days()
|| (lhs.days() == rhs.days() && lhs.fractionalDayInMicroseconds()
< rhs.fractionalDayInMicroseconds())
The other relationships are defined similarly.
◆ operator<=
◆ operator==
Return true
if the specified lhs
and rhs
time intervals have the same value, and false
otherwise. Two time intervals have the same value if all of the corresponding values of their days, hours, minutes, seconds, milliseconds, and microseconds fields are the same.
◆ operator>
◆ operator>=
◆ k_MILLISECONDS_MAX
const bsls::Types::Int64 bdlt::DatetimeInterval::k_MILLISECONDS_MAX = 185542587187199999LL |
|
static |
The maximum interval that is representable by a DatetimeInterval
, in milliseconds.
◆ k_MILLISECONDS_MIN
Initial value:=
static const bsls::Types::Int64 k_MILLISECONDS_MAX
Definition bdlt_datetimeinterval.h:253
static const bsls::Types::Int64 k_MILLISECONDS_PER_DAY
Definition bdlt_timeunitratio.h:249
The minimum interval that is representable by a DatetimeInterval
, in milliseconds.
The documentation for this class was generated from the following file: