3#ifndef TIME_SHIELD_HEADER_CONVERSIONS_OLE_AUTOMATION_CONVERSIONS_HPP_INCLUDED
4#define TIME_SHIELD_HEADER_CONVERSIONS_OLE_AUTOMATION_CONVERSIONS_HPP_INCLUDED
32 return value >=
static_cast<oadate_t>((std::numeric_limits<int64_t>::min)())
33 && value <=
static_cast<oadate_t>((std::numeric_limits<int64_t>::max)());
37 return value < 0 ? -value : value;
44 return static_cast<oadate_t>(
static_cast<int64_t
>(value));
49 if (truncated == value) {
53 return truncated -
static_cast<oadate_t>(1.0);
68 const oadate_t fraction = linear_days - whole_days;
69 return whole_days - fraction;
78 return whole_days + fraction;
119 return static_cast<ts_t>(seconds);
138 return static_cast<ts_ms_t>(ms);
146 template<
class T1,
class T2,
class T3>
148 T1
year, T2 month, T2 day,
149 T2 hour = 0, T2 min = 0, T2 sec = 0, T3 ms = 0) noexcept {
Conversions involving DateTimeStruct and day boundary helpers.
constexpr int64_t OLE_EPOCH
OLE automation date since UNIX epoch.
constexpr int64_t MS_PER_DAY
Milliseconds per day.
constexpr int64_t SEC_PER_DAY
Seconds per day.
TIME_SHIELD_CONSTEXPR T year(ts_t ts=time_shield::ts())
Alias for year_of function.
TIME_SHIELD_CONSTEXPR fts_t to_ftimestamp(T1 year, T2 month, T2 day, T2 hour=0, T2 min=0, T2 sec=0, T3 ms=0)
Converts a date and time to a floating-point timestamp.
int64_t ts_t
Unix timestamp in seconds since 1970‑01‑01T00:00:00Z.
int64_t ts_ms_t
Unix timestamp in milliseconds since epoch.
double fts_t
Floating-point timestamp (fractional seconds since epoch).
double oadate_t
OLE Automation date (days since 1899‑12‑30, as double).
ts_t ts() noexcept
Get the current UTC timestamp in seconds.
ts_ms_t ts_ms() noexcept
Get the current UTC timestamp in milliseconds.
fts_t fts() noexcept
Get the current UTC timestamp in floating-point seconds.
TIME_SHIELD_CONSTEXPR oadate_t oadate_to_linear_days(oadate_t oa) noexcept
TIME_SHIELD_CONSTEXPR oadate_t linear_days_to_oadate(oadate_t linear_days) noexcept
TIME_SHIELD_CONSTEXPR oadate_t oadate_trunc_toward_zero(oadate_t value) noexcept
TIME_SHIELD_CONSTEXPR oadate_t oadate_floor_value(oadate_t value) noexcept
TIME_SHIELD_CONSTEXPR oadate_t oadate_abs(oadate_t value) noexcept
TIME_SHIELD_CONSTEXPR bool oadate_can_cast_to_i64(oadate_t value) noexcept
TIME_SHIELD_CONSTEXPR bool oadate_has_fraction(oadate_t value) noexcept
Main namespace for the Time Shield library.
TIME_SHIELD_CONSTEXPR oadate_t ts_ms_to_oadate(ts_ms_t ts_ms) noexcept
Convert Unix timestamp (milliseconds) to OA date.
TIME_SHIELD_CONSTEXPR oadate_t ts_to_oadate(ts_t ts) noexcept
Convert Unix timestamp (seconds) to OA date.
TIME_SHIELD_CONSTEXPR ts_t oadate_to_ts(oadate_t oa) noexcept
Convert OA date to Unix timestamp (seconds).
TIME_SHIELD_CONSTEXPR oadate_t to_oadate(T1 year, T2 month, T2 day, T2 hour=0, T2 min=0, T2 sec=0, T3 ms=0) noexcept
Build OA date from calendar components (Gregorian).
TIME_SHIELD_CONSTEXPR fts_t oadate_to_fts(oadate_t oa) noexcept
Convert OA date to Unix timestamp (floating seconds).
TIME_SHIELD_CONSTEXPR ts_ms_t oadate_to_ts_ms(oadate_t oa) noexcept
Convert OA date to Unix timestamp (milliseconds).
TIME_SHIELD_CONSTEXPR oadate_t fts_to_oadate(fts_t ts) noexcept
Convert Unix timestamp (floating seconds) to OA date.