204#include <string_view>
275 explicit inline
DateTime( std::chrono::system_clock::time_point timePoint ) noexcept;
315 explicit inline
DateTime( std::string_view iso8601String );
355 inline constexpr std::strong_ordering operator<=>( const
DateTime& other ) const noexcept;
362 inline constexpr
bool operator==( const
DateTime& other ) const noexcept;
412 [[nodiscard]] std::int32_t
year() const noexcept;
419 [[nodiscard]] std::int32_t
month() const noexcept;
426 [[nodiscard]] std::int32_t
day() const noexcept;
433 [[nodiscard]] std::int32_t
hour() const noexcept;
440 [[nodiscard]] std::int32_t
minute() const noexcept;
447 [[nodiscard]] std::int32_t
second() const noexcept;
476 [[nodiscard]] constexpr std::int64_t
ticks() const noexcept;
541 [[nodiscard]] inline static constexpr
bool isLeapYear( std::int32_t
year ) noexcept;
550 [[nodiscard]] inline static constexpr std::int32_t
daysInMonth( std::int32_t
year, std::int32_t
month ) noexcept;
670 [[nodiscard]] std::chrono::system_clock::time_point
toChrono() const noexcept;
680 [[nodiscard]] static
DateTime fromChrono( const std::chrono::system_clock::time_point& timePoint ) noexcept;
684 std::int64_t m_ticks;
688#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).
bool isValid() const noexcept
Check if this DateTime is valid.
std::int32_t second() const noexcept
Get second component (0-59).
std::string toIso8601Extended() const
Convert to ISO 8601 extended format with full precision.
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::string toString() const
Convert to ISO 8601 string (basic format).
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.
@ TimeOnly
Time only: "12:00:00".
@ UnixMilliseconds
Epoch timestamp with milliseconds: "1704110400123".
@ Iso8601Basic
ISO 8601 basic format: "2024-01-01T12:00:00Z".
@ UnixSeconds
Epoch timestamp format: "1704110400" (seconds since epoch).
@ Iso8601WithOffset
Date and time with timezone: "2024-01-01T12:00:00+02:00".
@ Iso8601Extended
ISO 8601 extended format with fractional seconds: "2024-01-01T12:00:00.1234567Z".
@ DateOnly
Date only format: "2024-01-01".
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.