LSSTApplications
17.0+11,17.0+34,17.0+56,17.0+57,17.0+59,17.0+7,17.0-1-g377950a+33,17.0.1-1-g114240f+2,17.0.1-1-g4d4fbc4+28,17.0.1-1-g55520dc+49,17.0.1-1-g5f4ed7e+52,17.0.1-1-g6dd7d69+17,17.0.1-1-g8de6c91+11,17.0.1-1-gb9095d2+7,17.0.1-1-ge9fec5e+5,17.0.1-1-gf4e0155+55,17.0.1-1-gfc65f5f+50,17.0.1-1-gfc6fb1f+20,17.0.1-10-g87f9f3f+1,17.0.1-11-ge9de802+16,17.0.1-16-ga14f7d5c+4,17.0.1-17-gc79d625+1,17.0.1-17-gdae4c4a+8,17.0.1-2-g26618f5+29,17.0.1-2-g54f2ebc+9,17.0.1-2-gf403422+1,17.0.1-20-g2ca2f74+6,17.0.1-23-gf3eadeb7+1,17.0.1-3-g7e86b59+39,17.0.1-3-gb5ca14a,17.0.1-3-gd08d533+40,17.0.1-30-g596af8797,17.0.1-4-g59d126d+4,17.0.1-4-gc69c472+5,17.0.1-6-g5afd9b9+4,17.0.1-7-g35889ee+1,17.0.1-7-gc7c8782+18,17.0.1-9-gc4bbfb2+3,w.2019.22
LSSTDataManagementBasePackage
|
Class for handling dates/times, including MJD, UTC, and TAI. More...
#include <DateTime.h>
Public Types | |
enum | DateSystem { JD = 0, MJD, EPOCH } |
enum | Timescale { TAI = 5, UTC, TT } |
Public Member Functions | |
DateTime () | |
Default constructor: construct an invalid DateTime. More... | |
DateTime (long long nsecs, Timescale scale=TAI) | |
Construct a DateTime from nanoseconds since the unix epoch. More... | |
DateTime (double date, DateSystem system=MJD, Timescale scale=TAI) | |
Construct a DateTime from a double in the specified system and scale. More... | |
DateTime (int year, int month, int day, int hr, int min, int sec, Timescale scale=TAI) | |
Construct a DateTime from year, month, day, etc. More... | |
DateTime (std::string const &iso8601, Timescale scale) | |
Construct a DateTime from an ISO8601 string. More... | |
long long | nsecs (Timescale scale=TAI) const |
Get date as nanoseconds since the unix epoch. More... | |
double | get (DateSystem system=MJD, Timescale scale=TAI) const |
Get date as a double in a specified representation, such as MJD. More... | |
std::string | toString (Timescale scale) const |
Get date as an ISO8601-formatted string. More... | |
struct tm | gmtime (Timescale scale) const |
Get date as a tm struct, with truncated fractional seconds. More... | |
struct timespec | timespec (Timescale scale) const |
Get date as a timespec struct, with time in seconds and nanoseconds. More... | |
struct timeval | timeval (Timescale scale) const |
Get date as a timeval struct, with time in seconds and microseconds. More... | |
bool | isValid () const |
Is this date valid? More... | |
bool | operator== (DateTime const &rhs) const |
std::size_t | hash_value () const noexcept |
Return a hash of this object. More... | |
Static Public Member Functions | |
static DateTime | now (void) |
Return current time as a DateTime. More... | |
static void | initializeLeapSeconds (std::string const &leapString) |
Initialize the leap second table from USNO. More... | |
Static Public Attributes | |
static constexpr long long | invalid_nsecs = std::numeric_limits<std::int64_t>::min() |
Friends | |
class | boost::serialization::access |
Class for handling dates/times, including MJD, UTC, and TAI.
Definition at line 64 of file DateTime.h.
Enumerator | |
---|---|
JD | |
MJD | |
EPOCH |
Definition at line 66 of file DateTime.h.
Enumerator | |
---|---|
TAI | |
UTC | |
TT |
Definition at line 67 of file DateTime.h.
|
explicit |
Default constructor: construct an invalid DateTime.
Definition at line 306 of file DateTime.cc.
Construct a DateTime from nanoseconds since the unix epoch.
[in] | nsecs | integer nanoseconds since the unix epoch; if nsecs == DateTime.invalid_nsecs then the DateTime is invalid, regardless of scale |
[in] | scale | time scale of input (TAI, TT or UTC, default TAI). |
lsst.pex.exceptions.DomainError | if scale is UTC and the date is before 1961-01-01 |
Definition at line 308 of file DateTime.cc.
|
explicit |
Construct a DateTime from a double in the specified system and scale.
[in] | date | specified date |
[in] | system | time system of input (JD, MJD, or EPOCH) |
[in] | scale | time scale of input (TAI, TT or UTC, default TAI). |
lsst.pex.exceptions.DomainError | if scale is UTC and the date is before 1961-01-01 |
Definition at line 310 of file DateTime.cc.
lsst::daf::base::DateTime::DateTime | ( | int | year, |
int | month, | ||
int | day, | ||
int | hr, | ||
int | min, | ||
int | sec, | ||
Timescale | scale = TAI |
||
) |
Construct a DateTime from year, month, day, etc.
(tm struct fields)
[in] | year | year; must be in the range [1902, 2261], inclusive. |
[in] | month | month number, where January = 1 |
[in] | day | day of the month (1 to 31). |
[in] | hr | hour (0 to 23) |
[in] | min | minute (0 to 59) |
[in] | sec | integer seconds (0 to 60) |
[in] | scale | time scale of input (TAI, TT or UTC, default TAI). |
lsst.pex.exceptions.DomainError | if year is < 1902 or > 2261, or if scale is UTC and the date is before 1961-01-01 (the start of the leap second table) |
Definition at line 327 of file DateTime.cc.
|
explicit |
Construct a DateTime from an ISO8601 string.
Accepts a restricted subset of ISO8601: yyyy-mm-ddThh:mm:ss.nnnnnnnnnZ where:
[in] | iso8601 | ISO8601 string representation of date and time |
[in] | scale | time scale of input (TAI, TT or UTC, default TAI). |
lsst.pex.exceptions.DomainError | if year is < 1902 or > 2261, or if scale is UTC and the date is before 1961-01-01 (the start of the leap second table) |
Definition at line 385 of file DateTime.cc.
double lsst::daf::base::DateTime::get | ( | DateSystem | system = MJD , |
Timescale | scale = TAI |
||
) | const |
Get date as a double in a specified representation, such as MJD.
[in] | system | desired time system (JD, MJD, or EPOCH) |
[in] | scale | desired time scale (TAI, TT or UTC) |
lsst.pex.exceptions.DomainError | if scale is UTC and the UTC date is before 1961-01-01 |
lsst.pex.exceptions.RuntimeError | if DateTime is invalid |
Definition at line 429 of file DateTime.cc.
struct tm lsst::daf::base::DateTime::gmtime | ( | Timescale | scale | ) | const |
Get date as a tm struct, with truncated fractional seconds.
[in] | scale | desired time scale (TAI, TT or UTC) |
lsst.pex.exceptions.DomainError | if scale is UTC and the UTC date is before 1961-01-01 |
lsst.pex.exceptions.RuntimeError | if DateTime is invalid |
Definition at line 465 of file DateTime.cc.
|
noexcept |
|
static |
Initialize the leap second table from USNO.
The data can be found here: http://maia.usno.navy.mil/ser7/tai-utc.dat and is saved in DateTime.cc as static constant leapString
.
leapString | leap second table from USNO as a single multiline string. |
Definition at line 527 of file DateTime.cc.
|
inline |
Is this date valid?
Definition at line 202 of file DateTime.h.
|
static |
Return current time as a DateTime.
Assumes the system clock keeps UTC, as almost all computers do.
Definition at line 517 of file DateTime.cc.
Get date as nanoseconds since the unix epoch.
[in] | scale | desired time scale (TAI, TT or UTC) |
lsst.pex.exceptions.DomainError | if scale is UTC and the UTC date is before 1961-01-01 |
Definition at line 447 of file DateTime.cc.
bool lsst::daf::base::DateTime::operator== | ( | DateTime const & | rhs | ) | const |
Definition at line 513 of file DateTime.cc.
struct timespec lsst::daf::base::DateTime::timespec | ( | Timescale | scale | ) | const |
Get date as a timespec struct, with time in seconds and nanoseconds.
[in] | scale | Desired time scale (TAI, TT or UTC) |
lsst.pex.exceptions.DomainError | if scale is UTC and the UTC date is before 1961-01-01 |
lsst.pex.exceptions.RuntimeError | if DateTime is invalid |
Definition at line 481 of file DateTime.cc.
struct timeval lsst::daf::base::DateTime::timeval | ( | Timescale | scale | ) | const |
Get date as a timeval struct, with time in seconds and microseconds.
[in] | scale | desired time scale (TAI, TT or UTC) |
lsst.pex.exceptions.DomainError | if scale is UTC and the UTC date is before 1961-01-01 |
lsst.pex.exceptions.RuntimeError | if DateTime is invalid |
Definition at line 490 of file DateTime.cc.
std::string lsst::daf::base::DateTime::toString | ( | Timescale | scale | ) | const |
Get date as an ISO8601-formatted string.
The returned format is: yyyy-mm-ddThh:mm:ss.sssssssssZ where the final Z is only present if scale is UTC
[in] | scale | Desired time scale (TAI, TT or UTC). |
lsst.pex.exceptions.DomainError | if scale is UTC and the UTC date is before 1961-01-01 |
lsst.pex.exceptions.RuntimeError | if DateTime is invalid |
Definition at line 499 of file DateTime.cc.
|
friend |
Definition at line 289 of file DateTime.h.
|
static |
Definition at line 74 of file DateTime.h.