LSST Applications g0b6bd0c080+a72a5dd7e6,g1182afd7b4+2a019aa3bb,g17e5ecfddb+2b8207f7de,g1d67935e3f+06cf436103,g38293774b4+ac198e9f13,g396055baef+6a2097e274,g3b44f30a73+6611e0205b,g480783c3b1+98f8679e14,g48ccf36440+89c08d0516,g4b93dc025c+98f8679e14,g5c4744a4d9+a302e8c7f0,g613e996a0d+e1c447f2e0,g6c8d09e9e7+25247a063c,g7271f0639c+98f8679e14,g7a9cd813b8+124095ede6,g9d27549199+a302e8c7f0,ga1cf026fa3+ac198e9f13,ga32aa97882+7403ac30ac,ga786bb30fb+7a139211af,gaa63f70f4e+9994eb9896,gabf319e997+ade567573c,gba47b54d5d+94dc90c3ea,gbec6a3398f+06cf436103,gc6308e37c7+07dd123edb,gc655b1545f+ade567573c,gcc9029db3c+ab229f5caf,gd01420fc67+06cf436103,gd877ba84e5+06cf436103,gdb4cecd868+6f279b5b48,ge2d134c3d5+cc4dbb2e3f,ge448b5faa6+86d1ceac1d,gecc7e12556+98f8679e14,gf3ee170dca+25247a063c,gf4ac96e456+ade567573c,gf9f5ea5b4d+ac198e9f13,gff490e6085+8c2580be5c,w.2022.27
LSST Data Management Base Package
|
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 | |
constexpr static 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.
|
explicit |
Default constructor: construct an invalid DateTime.
Definition at line 307 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 309 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 [Julian] 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 311 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 328 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 386 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 [Julian] 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 430 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 466 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 528 of file DateTime.cc.
|
inline |
|
static |
Return current time as a DateTime.
Assumes the system clock keeps UTC, as almost all computers do.
Definition at line 518 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 448 of file DateTime.cc.
bool lsst::daf::base::DateTime::operator== | ( | DateTime const & | rhs | ) | const |
Definition at line 514 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 482 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 491 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 500 of file DateTime.cc.
|
friend |
Definition at line 291 of file DateTime.h.
|
staticconstexpr |
Definition at line 75 of file DateTime.h.