According to rclcpp::timer docs, std::chrono::steady_clock
is used,
using WallTimer = GenericTimer< CallbackType, std::chrono::steady_clock >
Quoting from std::chrono::steady_clock docs,
Class std::chrono::steady_clock
represents a monotonic clock. The time
points of this clock cannot decrease
as physical time moves forward and the
time between ticks of this clock is
constant. This clock is not related to
wall clock time (for example, it can
be time since last reboot), and is
most suitable for measuring intervals.
So to answer your question, Yes, it is guaranteed never to jump backwards (or forwards) due to midnight, daylight savings time, user changing the system clock, clock adjustments via NTP, etc