5namespace Stroika::Foundation::Time {
14 , fBiasInMinutesFromUTC_{0}
17 inline constexpr Timezone::Timezone (BiasInMinutesFromUTCType biasInMinutesFromUTC) noexcept
18 : fTZ_{TZ_::eFixedOffsetBias}
19 , fBiasInMinutesFromUTC_{biasInMinutesFromUTC}
21 Require (kBiasInMinutesFromUTCTypeValidRange.Contains (biasInMinutesFromUTC));
24 : fTZ_{TZ_::eFixedOffsetBias}
25 , fBiasInMinutesFromUTC_{biasInMinutesFromUTC}
27 if (validationStrategy == DataExchange::ValidationStrategy::eThrow) {
28 if (not kBiasInMinutesFromUTCTypeValidRange.Contains (biasInMinutesFromUTC)) {
29 Execution::Throw (Execution::RuntimeErrorException{
"invalid timezone offset"sv});
32 Require (kBiasInMinutesFromUTCTypeValidRange.Contains (biasInMinutesFromUTC));
34 inline constexpr Timezone Timezone::kUTC{TZ_::eUTC};
35 inline constexpr Timezone Timezone::kLocalTime{TZ_::eLocalTime};
36 inline constexpr optional<Timezone> Timezone::kUnknown{nullopt};
37 inline make_signed_t<time_t> Timezone::GetBiasFromUTC (
const Date& date,
const TimeOfDay& tod)
const
40 return static_cast<make_signed_t<time_t>
> (60) * GetBiasInMinutesFromUTC (date, tod);