table of contents
- Tumbleweed 2024.07.05-1.3
- Leap-16.0
- Leap-15.6
std::chrono::zoned_time::zoned_time(3) | C++ Standard Libary | std::chrono::zoned_time::zoned_time(3) |
NAME¶
std::chrono::zoned_time::zoned_time - std::chrono::zoned_time::zoned_time
Synopsis¶
zoned_time(); (1) (since C++20)
zoned_time( const std::chrono::sys_time<Duration>& st ); (2)
(since C++20)
zoned_time( const zoned_time& other ) = default; (3) (since
C++20)
template< class Duration2 >
zoned_time( const std::chrono::zoned_time<Duration2, (4) (since
C++20)
TimeZonePtr>& other );
explicit zoned_time( TimeZonePtr z ); (5) (since C++20)
explicit zoned_time( std::string_view name ); (6) (since C++20)
zoned_time( TimeZonePtr z, const std::chrono::sys_time<Duration>&
(7) (since C++20)
st );
zoned_time( std::string_view name, const (8) (since C++20)
std::chrono::sys_time<Duration>& st );
zoned_time( TimeZonePtr z, const (9) (since C++20)
std::chrono::local_time<Duration>& tp );
zoned_time( std::string_view name, const (10) (since C++20)
std::chrono::local_time<Duration>& tp );
zoned_time( TimeZonePtr z, const
std::chrono::local_time<Duration>& tp, (11) (since
C++20)
std::chrono::choose c );
zoned_time( std::string_view name,
const std::chrono::local_time<Duration>& tp, (12) (since
C++20)
std::chrono::choose c );
template< class Duration2, class TimeZonePtr2 >
zoned_time( TimeZonePtr z, (13) (since C++20)
const std::chrono::zoned_time<Duration2,
TimeZonePtr2>& zt );
template< class Duration2, class TimeZonePtr2 >
zoned_time( TimeZonePtr z,
const std::chrono::zoned_time<Duration2, (14) (since C++20)
TimeZonePtr2>& zt,
std::chrono::choose );
template< class Duration2, class TimeZonePtr2 >
zoned_time( std::string_view name, (15) (since C++20)
const std::chrono::zoned_time<Duration2,
TimeZonePtr2>& zt );
template< class Duration2, class TimeZonePtr2 >
zoned_time( std::string_view name,
const std::chrono::zoned_time<Duration2, (16) (since C++20)
TimeZonePtr2>& zt,
std::chrono::choose );
Constructs a zoned_time object, initializing the stored time zone pointer and
time
point according to the following table, where traits is
std::chrono::zoned_traits<TimeZonePtr>:
Overload Time zone pointer (denoted Time point (a Notes
zone) std::chrono::sys_time<duration>)
(1) traits::default_zone() default constructed (a)
(2) st
(3) other.get_time_zone() other.get_sys_time() (b)
(4) other.get_time_zone() other.get_sys_time() (e)
(5) std::move(z) default constructed
(6) traits::locate_zone(name) (c)
(7) std::move(z) st
(8) traits::locate_zone(name) (c)
(9) std::move(z) zone->to_sys(tp) (d)
(10) traits::locate_zone(name) (c,d)
(11) std::move(z) zone->to_sys(tp, c) (d)
(12) traits::locate_zone(name) (c,d)
(13,14) std::move(z) zt.get_sys_time() (e)
(15,16) traits::locate_zone(name) (c,e)
a) Constructors specified to call traits::default_zone() (1,2) do not
participate in
overload resolution if that expression is not well-formed.
b) The defaulted copy constructor (3) is defined as deleted if
std::is_copy_constructible_v<TimeZonePtr> is false.
c) Constructors with a std::string_view parameter name (6,8,10,12,15,16) do
not
participate in overload resolution if traits::locate_zone(name) is not
well-formed
or if that expression is not convertible to TimeZonePtr.
d) Constructors specified to call zone->to_sys (9-12) do not participate
in overload
resolution if that call expression is not well-formed or if the result is not
convertible to std::chrono::sys_time<duration>.
e) Constructors with a template parameter Duration2 (4,13-16) do not
participate in
overload resolution if Duration2 is not convertible to Duration.
The behavior is undefined if the time zone pointer (initialized as described
above)
does not refer to a time zone.
Notes¶
zoned_time does not have a move constructor and attempting to
move one will perform
a copy instead using the defaulted copy constructor (3). Thus, when
TimeZonePtr is a
move-only type, zoned_time is immovable: it can be neither moved nor
copied.
The constructors (14,16) accept a std::chrono::choose parameter, but that
parameter
has no effect.
Example¶
// Run this code
#include <chrono>
#include <iostream>
#include <string_view>
int main()
{
using std::chrono_literals::operator""y;
using std::operator""sv;
std::cout << std::chrono::zoned_time{} << " :
default\n";
constexpr std::string_view location1{"America/Phoenix"sv};
std::cout << std::chrono::zoned_time{location1} << " :
" << location1 << '\n';
const std::chrono::time_zone* timeZonePtr =
std::chrono::locate_zone("UTC");
std::cout << std::chrono::zoned_time{timeZonePtr} << " : UTC
time zone\n";
constexpr auto location2{"Europe/Rome"sv};
std::cout << std::chrono::zoned_time{location2,
std::chrono::local_days{2021y/12/31}}
<< " : " << location2 << '\n';
constexpr auto location3{"Europe/Rome"sv};
constexpr auto some_date =
std::chrono::sys_time<std::chrono::days>{2021y/12/31};
std::cout << std::chrono::zoned_time{location3, some_date}
<< " : " << location3 << '\n';
const auto now =
std::chrono::floor<std::chrono::minutes>(std::chrono::system_clock::now());
constexpr auto location4{"Europe/Rome"sv};
std::cout << std::chrono::zoned_time{location4, now} << " :
" << location4 << '\n';
constexpr auto NewYork{"America/New_York"sv};
constexpr auto Tokyo{"Asia/Tokyo"sv};
const std::chrono::zoned_time tz_Tokyo{Tokyo, now};
const std::chrono::zoned_time tz_NewYork{NewYork, now};
std::cout << std::chrono::zoned_time{Tokyo, tz_NewYork} << "
: " << Tokyo << '\n';
std::cout << std::chrono::zoned_time{NewYork, tz_Tokyo} << "
: " << NewYork << '\n';
}
Possible output:¶
1970-01-01 00:00:00 UTC : default
1969-12-31 17:00:00 MST : America/Phoenix
1970-01-01 00:00:00 UTC : UTC time zone
2021-12-31 00:00:00 CET : Europe/Rome
2021-12-31 01:00:00 CET : Europe/Rome
2021-09-20 23:04:00 CEST : Europe/Rome
2021-09-21 06:04:00 JST : Asia/Tokyo
2021-09-20 17:04:00 EDT : America/New_York
2024.06.10 | http://cppreference.com |