userver: userver/utils/datetime.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
datetime.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/utils/datetime.hpp
4/// @brief Date, Time, and Timezone related converters
5/// @ingroup userver_universal
6
7#include <userver/utils/datetime_light.hpp>
8
9USERVER_NAMESPACE_BEGIN
10
11namespace utils::datetime {
12
13/// @brief Returns time in a string of specified format
14///
15/// @throws utils::datetime::TimezoneLookupError
16///
17/// Example:
18///
19/// @snippet utils/datetime/datetime_test.cpp Timestring C time example
20///
21/// @see kRfc3339Format, kTaximeterFormat, kStartOfTheEpoch,
22/// kDefaultDriverTimezone, kDefaultTimezone, kDefaultFormat, kIsoFormat
23std::string Timestring(
24 std::time_t timestamp,
25 const std::string& timezone = kDefaultTimezone,
26 const std::string& format = kDefaultFormat
27);
28
29/// @brief Returns time in a string of specified format
30/// @throws utils::datetime::TimezoneLookupError
31///
32/// Example:
33///
34/// @snippet utils/datetime/datetime_test.cpp Timestring example
35/// @see kRfc3339Format, kTaximeterFormat, kStartOfTheEpoch,
36/// kDefaultDriverTimezone, kDefaultTimezone, kDefaultFormat, kIsoFormat
37std::string Timestring(
38 std::chrono::system_clock::time_point tp,
39 const std::string& timezone,
40 const std::string& format = kDefaultFormat
41);
42
43/// @brief Extracts time point from a string of a specified format
44/// @throws utils::datetime::DateParseError
45/// @throws utils::datetime::TimezoneLookupError
46///
47/// Example:
48///
49/// @snippet utils/datetime/datetime_test.cpp Stringtime example
50/// @see kRfc3339Format, kTaximeterFormat, kStartOfTheEpoch,
51/// kDefaultDriverTimezone, kDefaultTimezone, kDefaultFormat, kIsoFormat
52std::chrono::system_clock::time_point
53Stringtime(const std::string& timestring, const std::string& timezone, const std::string& format = kDefaultFormat);
54
55/// @brief Extracts time point from a string, guessing the format
56/// @throws utils::datetime::DateParseError
57/// @throws utils::datetime::TimezoneLookupError
58///
59/// Example:
60///
61/// @snippet utils/datetime/datetime_test.cpp GuessStringtime example
62std::chrono::system_clock::time_point GuessStringtime(const std::string& timestamp, const std::string& timezone);
63
64/// @brief Returns optional time in a string of specified format
65///
66/// Example:
67///
68/// @snippet utils/datetime/datetime_test.cpp OptionalStringtime example
69/// @see kRfc3339Format, kTaximeterFormat, kStartOfTheEpoch,
70/// kDefaultDriverTimezone, kDefaultTimezone, kDefaultFormat, kIsoFormat
71std::optional<std::chrono::system_clock::time_point> OptionalStringtime(
72 const std::string& timestring,
73 const std::string& timezone,
74 const std::string& format = kDefaultFormat
75);
76
77/// @brief Converts absolute time in std::chrono::system_clock::time_point to
78/// a civil time of a particular timezone.
79/// @throws utils::datetime::TimezoneLookupError
80///
81/// Example:
82///
83/// @snippet utils/datetime/datetime_test.cpp Localize example
84cctz::civil_second Localize(const std::chrono::system_clock::time_point& tp, const std::string& timezone);
85
86/// @brief Converts a civil time in a specified timezone into an absolute time.
87/// @throws utils::datetime::TimezoneLookupError
88///
89/// Example:
90///
91/// @snippet utils/datetime/datetime_test.cpp Localize example
92std::time_t Unlocalize(const cctz::civil_second& local_tp, const std::string& timezone);
93
94} // namespace utils::datetime
95
96USERVER_NAMESPACE_END