std::chrono...one::to_sys(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

okay so this is std::chrono...one::to_sys(3), straight out of the C++ Standard Libary manual (yes, that spelling is literally in the header, iykyk πŸ’…). The name is std::chrono::time_zone::to_sys β€” std::chrono::time_zone::to_sys. Iconic. Periodt.

πŸ“œ Synopsis πŸ“œ

bestie, here's the signature situation. Both overloads are since C++20, and they convert the local_time tp in this time zone to the corresponding sys_time. It's giving timezone glow-up for your timestamp ✨.

Overload (1) β€” since C++20:

template< class Duration >
auto to_sys( const std::chrono::local_time<Duration>& tp ) const
    -> std::chrono::sys_time<std::common_type_t<Duration, std::chrono::seconds>>;

Overload (2) β€” since C++20:

template< class Duration >
auto to_sys( const std::chrono::local_time<Duration>& tp, std::chrono::choose z ) const
    -> std::chrono::sys_time<std::common_type_t<Duration, std::chrono::seconds>>;

So like, to_sys converts the local_time tp in this time zone to the corresponding sys_time.

  1. Overload (1) throws an exception if the conversion is ambiguous or if tp represents a nonexistent time. No cap, it will absolutely throw.
  2. Overload (2) resolves ambiguity according to the value of z:
    • If z == std::chrono::choose::earliest, returns the earlier sys_time.
    • If z == std::chrono::choose::latest, returns the later sys_time.

If tp represents a nonexistent time between two UTC time_points, those two time_points will be the same, and that time_point will be returned. That's the rule, bestie.

🎁 Return value 🎁

The UTC equivalent of tp according to the rules of this time zone. That's the whole vibe. πŸ’–

😭 Exceptions 😭

  1. Overload (1) throws:
    • std::chrono::ambiguous_local_time if the conversion is ambiguous,
    • std::chrono::nonexistent_local_time if tp represents a nonexistent time.

🧠 Notes 🧠

The precision of the result is at least std::chrono::seconds, and will be finer if the argument has finer precision. So seconds is the floor, not the ceiling, bestie ✨.

Ambiguous and nonexistent local times can occur as a result of time zone transitions (such as daylight saving time). For example, "2016-03-13 02:30:00" does not exist in the "America/New_York" time zone, while "2016-11-06 01:30:00" in that time zone can correspond to two UTC time points: 2016-11-06 05:30:00 UTC and 2016-11-06 06:30:00 UTC. That is not a glitch, it is DST being DST πŸ’€.

πŸŽ€ Example πŸŽ€

This section is incomplete.

Reason: no example.

Literally it says that, I'm not hiding anything πŸ™ˆ.

πŸ—‚οΈ Category πŸ—‚οΈ

  • Todo no example

okay bestie, that's the page. source/version: http://cppreference.com Β· date: 2024.06.10 Β· page: std::chrono...one::to_sys(3) β€” go forth and convert those local times, but watch out for DST chaos πŸŒΈπŸ’….

πŸ“¦ where this page comes from