xtd 0.2.0
Loading...
Searching...
No Matches
time_zone_info.h
Go to the documentation of this file.
1
4#pragma once
6#include "day_of_week.h"
7#include "icomparable.h"
8#include "iequatable.h"
9#include "date_time.h"
10#include "object.h"
11#include "ticks.h"
12#include "ustring.h"
13
15namespace xtd {
38 class core_export_ time_zone_info : public xtd::icomparable<time_zone_info>, public xtd::iequatable<time_zone_info>, public xtd::object {
39 public:
41
66 class transition_time : public xtd::iequatable<transition_time>, public xtd::object {
67 public:
69 transition_time() = default;
70 transition_time(const transition_time&) = default;
72 transition_time& operator =(const transition_time&) = default;
74
76
83 uint32 day() const noexcept;
84
89 xtd::day_of_week day_of_week() const noexcept;
90
102 bool is_fixed_rule() const noexcept;
103
108 uint32 month() const noexcept;
109
115 xtd::date_time time_of_day() const noexcept;
116
129 uint32 week() const noexcept;
131
133
144 static transition_time create_fixed_date_rule(date_time time_of_day, uint32 month, uint32 day);
145
156 static transition_time create_floating_date_rule(date_time time_of_day, uint32 month, uint32 week, xtd::day_of_week day_of_week);
157
158 bool equals(const transition_time& tt) const noexcept override;
160
161 private:
162 uint32 day_ = 0;
163 xtd::day_of_week day_of_week_ = xtd::day_of_week::sunday;
164 bool is_fixed_date_rule_ = true;
165 uint32 month_ = 0;
166 xtd::date_time time_of_day_;
167 uint32 week_ = 0;
168 };
169
186 class adjustement_rule : public xtd::iequatable<adjustement_rule>, public xtd::object {
187 public:
189 adjustement_rule() = default;
190 adjustement_rule(const adjustement_rule&) = default;
192 adjustement_rule& operator =(const adjustement_rule&) = default;
194
196
203 const xtd::date_time& date_end() const noexcept;
204
210 const xtd::date_time& date_start() const noexcept;
211
221 xtd::time_span daylight_delta() const noexcept;
222
226 transition_time daylight_transition_end() const noexcept;
227
231 transition_time daylight_transition_start() const noexcept;
233
235
237 bool equals(const adjustement_rule& ar) const noexcept override;
239
240 private:
241 xtd::date_time date_end_ {date_time::max_value};
242 xtd::date_time date_start_ {date_time::min_value};
243 xtd::ticks daylight_delta_ {0};
244 transition_time daylight_transition_end_;
245 transition_time daylight_transition_start_;
246 };
248
250 time_zone_info() = default;
251 time_zone_info(const ustring& id, const ticks& base_utc_offset, const ustring& daylight_name, const ustring& display_name, const ustring& standard_name, bool supports_daylight_saving_time);
252 time_zone_info(const time_zone_info&) = default;
253 time_zone_info(time_zone_info&&) = default;
254 time_zone_info& operator =(const time_zone_info&) = default;
256
258
268 ticks base_utc_offset() const noexcept;
269
276 const ustring& daylight_name() const noexcept;
277
288 const ustring& display_name() const noexcept;
289
293 const ustring& id() const noexcept;
294
300 const ustring& standard_name() const noexcept;
301
305 bool supports_daylight_saving_time() const noexcept;
307
309
313 static const time_zone_info& local() noexcept;
314
317 static const time_zone_info& utc() noexcept;
319
321
323 int32 compare_to(const time_zone_info& tzi) const noexcept override;
324
325 bool equals(const time_zone_info& tzi) const noexcept override;
326
329 std::vector<adjustement_rule> get_adjustement_rules() const noexcept;
330
334 bool is_daylight_saving_time(const xtd::date_time& date_time) const noexcept;
335
336 xtd::ustring to_string() const noexcept override;
338
340
347 static xtd::date_time convert_time_to_utc(const xtd::date_time& date_time);
348
351 static const std::list<time_zone_info>& get_system_time_zones() noexcept;
352
358 static xtd::date_time convert_time(const xtd::date_time& date_time, const xtd::time_zone_info& destination_time_zone);
365 static xtd::date_time convert_time(const xtd::date_time& date_time, const xtd::time_zone_info& source_time_zone, const xtd::time_zone_info& destination_time_zone);
366
371 static xtd::date_time convert_time_by_system_time_zone_id(const xtd::date_time& date_time, const xtd::ustring& destination_time_zone_id);
377 static xtd::date_time convert_time_by_system_time_zone_id(const xtd::date_time& date_time, const xtd::ustring& source_time_zone_id, const xtd::ustring& destination_time_zone_id);
378
383 static xtd::date_time convert_from_utc(const xtd::date_time& date_time, const xtd::time_zone_info& destination_time_zone);
384
389 static xtd::date_time convert_to_utc(const xtd::date_time& date_time, const xtd::time_zone_info& source_time_zone);
393 static xtd::date_time convert_to_utc(const xtd::date_time& date_time);
394
400 static time_zone_info time_find_system_time_zone_by_id(const ustring& id);
402
403 private:
404 ustring id_;
405 ticks base_utc_offset_;
406 ustring daylight_name_;
407 ustring display_name_;
408 ustring standard_name_;
409 bool supports_daylight_saving_time_ = false;
410 std::vector<adjustement_rule> adjustement_rules_;
411 };
412}
Contains xtd::argument_out_of_range_exception exception.
Represents an instant in time, typically expressed as a date and time of day.
Definition date_time.h:79
Defines a generalized comparison method that a value type or class implements to create a type-specif...
Definition icomparable.h:17
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.h:18
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:32
Provides information about a time zone adjustment, such as the transition to and from daylight saving...
Definition time_zone_info.h:186
const xtd::date_time & date_end() const noexcept
Gets the date when the adjustment rule ceases to be in effect.
Provides information about a specific time change, such as the change from daylight saving time to st...
Definition time_zone_info.h:66
uint32 day() const noexcept
Gets the day on which the time change occurs.
Represents any time zone in the world.
Definition time_zone_info.h:38
ticks base_utc_offset() const noexcept
Gets the time difference between the current time zone's standard time and Coordinated Universal Time...
Represents text as a sequence of UTF-8 code units.
Definition ustring.h:47
Contains xtd::date_time class.
Contains xtd::day_of_week enum class.
#define core_export_
Define shared library export.
Definition core_export.h:13
int_least32_t int32
Represents a 32-bit signed integer.
Definition types.h:131
uint_least32_t uint32
Represents a 32-bit unsigned integer.
Definition types.h:241
std::chrono::duration< int64, tick > ticks
Represents a tick duration.
Definition ticks.h:21
day_of_week
Specifies the day of the week.
Definition day_of_week.h:23
Contains xtd::icomparable interface.
Contains xtd::iequatable interface.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10
Contains xtd::object class.
Represents a time interval.
Definition time_span.h:26
Contains xtd::ticks typedef.
Contains xtd::ustring class.