Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::chrono::zoned_time(3)    C++ Standard Libary   std::chrono::zoned_time(3)

NAME
       std::chrono::zoned_time - std::chrono::zoned_time

Synopsis
	  Defined in header <chrono>
	  template<

	      class						     Duration,
       (since C++20)
	      class TimeZonePtr	= const	std::chrono::time_zone*

	  > class zoned_time;
	  using	zoned_seconds =	std::chrono::zoned_time<std::chrono::seconds>;
       (since C++20)

	  The class zoned_time represents a logical pairing of a time zone and
       a
	  std::chrono::time_point whose	resolution is Duration.

	  An invariant of zoned_time is	that it	always refers to a valid  time
       zone and
	  represents an	existing and unambiguous time point in that time zone.
       Consistent with
	  this	invariant,  zoned_time has no move constructor or move assign-
       ment operator;
	  attempts to move a zoned_time	will perform a copy.

	  The program is ill-formed if Duration	is not a specialization	of
	  std::chrono::duration.

	  The template parameter TimeZonePtr allows users to supply their  own
       time zone
	  pointer types	and further customize the behavior of zoned_time via
	  std::chrono::zoned_traits.  Custom  time zone	types need not support
       all the
	  operations supported by std::chrono::time_zone, only those  used  by
       the functions
	  actually called on the zoned_time.

	  TimeZonePtr  must  be	 MoveConstructible. Move-only TimeZonePtrs are
       allowed but
	  difficult to use, as the zoned_time will be immovable	and it is  not
       possible	to
	  access the stored TimeZonePtr.

Member types
	  Member type Definition
	  duration    std::common_type_t<Duration, std::chrono::seconds>

Member functions
	  constructor	      constructs a zoned_time
			      (public member function)
	  operator=	      assigns value to a zoned_time
			      (public member function)
	  get_time_zone	      obtains a	copy of	the time zone pointer
			      (public member function)
	  operator local_time obtains the stored time point as a local_time
	  get_local_time      (public member function)
	  operator sys_time   obtains the stored time point as a sys_time
	  get_sys_time	      (public member function)
	  get_info	       obtain  information  about the time zone	at the
       stored time point
			      (public member function)

Non-member functions
	  operator== compares two zoned_time values
	  (C++20)    (function template)
	  operator<< outputs a zoned_time into a stream
	  (C++20)    (function template)

Helper classes
	  std::formatter<std::chrono::zoned_time>   formatting	 support   for
       zoned_time
	  (C++20)				   (class template specializa-
       tion)
	  std::hash<std::chrono::zoned_time>	      hash     support	   for
       std::chrono::zoned_time
	  (C++26)				   (class template specializa-
       tion)

	  Deduction guides

Example
       // Run this code

	#include <algorithm>
	#include <chrono>
	#include <iomanip>
	#include <iostream>
	#include <stdexcept>
	#include <string_view>

	int main()
	{
	    constexpr std::string_view locations[] =
	    {
		"Africa/Casablanca",   "America/Argentina/Buenos_Aires",
		"America/Barbados",    "America/Indiana/Petersburg",
		"America/Tarasco_Bar", "Antarctica/Casey",
		"Antarctica/Vostok",   "Asia/Magadan",
		"Asia/Manila",	       "Asia/Shanghai",
		"Asia/Tokyo",	       "Atlantic/Bermuda",
		"Australia/Darwin",    "Europe/Isle_of_Man",
		"Europe/Laputa",       "Indian/Christmas",
		"Indian/Cocos",	       "Pacific/Galapagos",
	    };

	    constexpr auto width = std::ranges::max_element(locations, {},
		[](const auto& s){ return s.length(); })->length();

	    for	(const auto location : locations)
		try
		{
		    // may throw if 'location' is not in the time  zone	 data-
       base
		    const	  std::chrono::zoned_time	  zt{location,
       std::chrono::system_clock::now()};
		    std::cout << std::setw(width) << location  <<  "  -	 Zoned
       Time: " << zt <<	'\n';
		}
		catch (std::runtime_error& ex)
		{
		    std::cout << "Error: " << ex.what()	<< '\n';
		}
	}

Possible output:
		     Africa/Casablanca	   -	 Zoned	   Time:    2023-06-29
       20:58:34.697449319 +01
	America/Argentina/Buenos_Aires	  -	Zoned	  Time:	    2023-06-29
       16:58:34.709957354 -03
		      America/Barbados	   -	 Zoned	   Time:    2023-06-29
       15:58:34.709977888 AST
	    America/Indiana/Petersburg	  -	Zoned	  Time:	    2023-06-29
       15:58:34.709998072 EDT
	Error: tzdb: cannot locate zone: America/Tarasco_Bar
		      Antarctica/Casey	   -	 Zoned	   Time:    2023-06-30
       06:58:34.710093685 +11
		     Antarctica/Vostok	  -	Zoned	  Time:	    2023-06-30
       01:58:34.710107932 +06
			  Asia/Magadan	   -	 Zoned	   Time:    2023-06-30
       06:58:34.710121831 +11
			   Asia/Manila	  -	Zoned	  Time:	    2023-06-30
       03:58:34.710134751 PST
			 Asia/Shanghai	   -	 Zoned	   Time:    2023-06-30
       03:58:34.710153259 CST
			    Asia/Tokyo	  -	Zoned	  Time:	    2023-06-30
       04:58:34.710172815 JST
		      Atlantic/Bermuda	   -	 Zoned	   Time:    2023-06-29
       16:58:34.710191043 ADT
		      Australia/Darwin	  -	Zoned	  Time:	    2023-06-30
       05:28:34.710236720 ACST
		    Europe/Isle_of_Man	   -	 Zoned	   Time:    2023-06-29
       20:58:34.710256834 BST
	Error: tzdb: cannot locate zone: Europe/Laputa
		      Indian/Christmas	  -	Zoned	  Time:	    2023-06-30
       02:58:34.710360409 +07
			  Indian/Cocos	   -	 Zoned	   Time:    2023-06-30
       02:28:34.710377520 +0630
		     Pacific/Galapagos	  -	Zoned	  Time:	    2023-06-29
       13:58:34.710389952 -06

See also
	  time_zone represents a time zone
	  (C++20)   (class)

http://cppreference.com		  2024.06.10	    std::chrono::zoned_time(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::chrono::zoned_time&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help