206#include <string_view>
289 inline explicit
DateTime( std::chrono::system_clock::time_point timePoint ) noexcept;
314 std::int32_t
second ) noexcept;
339 inline explicit
DateTime( std::string_view iso8601String );
345 inline explicit
DateTime( const
char* iso8601String );
351 inline explicit
DateTime( std::initializer_list<const
char*> list );
391 inline constexpr std::strong_ordering operator<=>( const
DateTime& other ) const noexcept;
398 inline constexpr
bool operator==( const
DateTime& other ) const noexcept;
448 [[nodiscard]] std::int32_t
year() const noexcept;
455 [[nodiscard]] std::int32_t
month() const noexcept;
462 [[nodiscard]] std::int32_t
day() const noexcept;
469 [[nodiscard]] std::int32_t
hour() const noexcept;
476 [[nodiscard]] std::int32_t
minute() const noexcept;
483 [[nodiscard]] std::int32_t
second() const noexcept;
512 [[nodiscard]] constexpr std::int64_t
ticks() const noexcept;
577 [[nodiscard]] inline static constexpr
bool isLeapYear( std::int32_t
year ) noexcept;
587 std::int32_t
year, std::int32_t
month ) noexcept;
693 [[nodiscard]] std::chrono::system_clock::time_point
toChrono() const noexcept;
703 [[nodiscard]] static
DateTime fromChrono( const std::chrono::system_clock::time_point& timePoint ) noexcept;
707 std::int64_t m_ticks;
711#include "nfx/detail/datetime/DateTime.inl"
High-precision time interval representation with 100-nanosecond tick precision.
constexpr std::int64_t toEpochMilliseconds() const noexcept
Convert to Epoch timestamp (milliseconds since epoch).
constexpr std::int64_t ticks() const noexcept
Get tick count (100-nanosecond units since year 1).
std::int32_t microsecond() const noexcept
Get microsecond component (0-999).
TimeSpan timeOfDay() const noexcept
Get time of day as duration since midnight.
static constexpr DateTime max() noexcept
Get maximum DateTime value.
DateTime date() const noexcept
Get date component (time set to 00:00:00).
std::string toString(Format format=Format::Iso8601) const
Convert to string using specified format.
bool isValid() const noexcept
Check if this DateTime is valid.
std::int32_t second() const noexcept
Get second component (0-59).
std::int32_t month() const noexcept
Get month component (1-12).
std::int32_t minute() const noexcept
Get minute component (0-59).
std::int32_t day() const noexcept
Get day component (1-31).
static constexpr DateTime epoch() noexcept
Get Unix epoch DateTime (January 1, 1970 00:00:00 UTC).
std::int32_t millisecond() const noexcept
Get millisecond component (0-999).
static bool fromString(std::string_view iso8601String, DateTime &result) noexcept
Parse ISO 8601 string safely without throwing exceptions.
static constexpr std::int32_t daysInMonth(std::int32_t year, std::int32_t month) noexcept
Get days in month for given year and month.
std::int32_t year() const noexcept
Get year component (1-9999).
static constexpr bool isLeapYear(std::int32_t year) noexcept
Check if given year is a leap year.
static DateTime utcNow() noexcept
Get current UTC time.
static constexpr DateTime fromEpochSeconds(std::int64_t seconds) noexcept
Create from Epoch timestamp (seconds since epoch).
static DateTime fromChrono(const std::chrono::system_clock::time_point &timePoint) noexcept
Create DateTime from std::chrono::system_clock::time_point.
std::chrono::system_clock::time_point toChrono() const noexcept
Convert to std::chrono::system_clock::time_point.
static constexpr DateTime fromEpochMilliseconds(std::int64_t milliseconds) noexcept
Create from Epoch timestamp (milliseconds since epoch).
static DateTime today() noexcept
Get current local date (time set to 00:00:00).
std::int32_t dayOfYear() const noexcept
Get day of year (1-366).
static DateTime now() noexcept
Get current local time.
constexpr DateTime() noexcept
Default constructor (minimum DateTime value).
std::int32_t hour() const noexcept
Get hour component (0-23).
std::int32_t nanosecond() const noexcept
Get nanosecond component (0-900, in 100ns increments).
std::int32_t dayOfWeek() const noexcept
Get day of week (0=Sunday, 6=Saturday).
Format
DateTime string format options.
@ Iso8601Millis
ISO 8601 with millisecond precision (3 decimal digits): "2024-01-01T12:00:00.123Z".
@ Iso8601Time
ISO 8601 time only: "12:00:00".
@ Iso8601Date
ISO 8601 date only: "2024-01-01".
@ Iso8601Micros
ISO 8601 with microsecond precision (6 decimal digits): "2024-01-01T12:00:00.123456Z".
@ UnixMilliseconds
Unix epoch milliseconds (integer): "1704110400000".
@ Iso8601Basic
ISO 8601 compact form without separators: "20240101T120000Z".
@ UnixSeconds
Unix epoch seconds (integer): "1704110400".
@ Iso8601
ISO 8601 with seconds precision: "2024-01-01T12:00:00Z".
@ Iso8601Precise
ISO 8601 with full tick precision (7 decimal digits): "2024-01-01T12:00:00.1234567Z".
@ Iso8601PreciseTrimmed
ISO 8601 with trimmed trailing zeros in fractions: "2024-01-01T12:00:00.1234Z".
@ Iso8601Extended
ISO 8601 with numeric offset (always +00:00 for DateTime): "2024-01-01T12:00:00+00:00".
constexpr std::int64_t toEpochSeconds() const noexcept
Convert to Epoch timestamp (seconds since epoch).
static constexpr DateTime min() noexcept
Get minimum DateTime value.
Represents a time interval in 100-nanosecond ticks.