MySQL 8.0.39
Source Code Documentation
Time_zone Class Referenceabstract

This class represents abstract time zone and provides basic interface for MYSQL_TIME <-> my_time_t conversion. More...

#include <tztime.h>

Inheritance diagram for Time_zone:
[legend]

Public Types

enum  tz_type { TZ_DB = 1 , TZ_OFFSET = 2 , TZ_SYSTEM = 3 , TZ_UTC = 4 }
 Enum to identify the type of the timezone. More...
 

Public Member Functions

virtual my_time_t TIME_to_gmt_sec (const MYSQL_TIME *t, bool *in_dst_time_gap) const =0
 Converts local time in MYSQL_TIME representation to my_time_t (UTC seconds since Epoch) representation. More...
 
virtual void gmt_sec_to_TIME (MYSQL_TIME *tmp, my_time_t t) const =0
 Converts UTC epoch seconds to time in MYSQL_TIME representation. More...
 
void gmt_sec_to_TIME (MYSQL_TIME *tmp, my_timeval tv) const
 Converts UTC epoch seconds and microseconds to time in MYSQL_TIME representation. More...
 
virtual const Stringget_name () const =0
 Because of constness of String returned by get_name() time zone name have to be already zeroended to be able to use String::ptr() instead of c_ptr(). More...
 
virtual tz_type get_timezone_type () const =0
 Returns the timezone type set. More...
 
virtual long get_timezone_offset () const =0
 Returns the offset set for a Timezone offset. More...
 
virtual ~Time_zone ()=default
 We need this only for suppressing warnings, objects of this type are allocated on MEM_ROOT and should not require destruction. More...
 

Static Protected Member Functions

static void adjust_leap_second (MYSQL_TIME *t)
 Convert leap seconds into non-leap. More...
 

Detailed Description

This class represents abstract time zone and provides basic interface for MYSQL_TIME <-> my_time_t conversion.

Actual time zones which are specified by DB, or via offset or use system functions are its descendants.

Member Enumeration Documentation

◆ tz_type

Enum to identify the type of the timezone.

Enumerator
TZ_DB 
TZ_OFFSET 
TZ_SYSTEM 
TZ_UTC 

Constructor & Destructor Documentation

◆ ~Time_zone()

virtual Time_zone::~Time_zone ( )
virtualdefault

We need this only for suppressing warnings, objects of this type are allocated on MEM_ROOT and should not require destruction.

Member Function Documentation

◆ adjust_leap_second()

void Time_zone::adjust_leap_second ( MYSQL_TIME t)
inlinestaticprotected

Convert leap seconds into non-leap.

This function will convert the leap seconds added by the OS to non-leap seconds, e.g. 23:59:59, 23:59:60 -> 23:59:59, 00:00:01 ... This check is not checking for years on purpose : although it's not a complete check this way it doesn't require looking (and having installed) the leap seconds table.

Parameters
[in,out]tbroken down time structure as filled in by the OS

◆ get_name()

virtual const String * Time_zone::get_name ( ) const
pure virtual

Because of constness of String returned by get_name() time zone name have to be already zeroended to be able to use String::ptr() instead of c_ptr().

Implemented in Time_zone_system, Time_zone_utc, Time_zone_db, and Time_zone_offset.

◆ get_timezone_offset()

virtual long Time_zone::get_timezone_offset ( ) const
pure virtual

Returns the offset set for a Timezone offset.

This function has to be invoked ONLY when TZ_OFFSET is set.

Implemented in Time_zone_system, Time_zone_utc, Time_zone_db, and Time_zone_offset.

◆ get_timezone_type()

virtual tz_type Time_zone::get_timezone_type ( ) const
pure virtual

Returns the timezone type set.

Implemented in Time_zone_system, Time_zone_utc, Time_zone_db, and Time_zone_offset.

◆ gmt_sec_to_TIME() [1/2]

virtual void Time_zone::gmt_sec_to_TIME ( MYSQL_TIME tmp,
my_time_t  t 
) const
pure virtual

Converts UTC epoch seconds to time in MYSQL_TIME representation.

Parameters
[out]tmpequivalent time point in MYSQL_TIME representation
[in]tnumber of seconds in UNIX epoch

Implemented in Time_zone_system, Time_zone_utc, Time_zone_db, and Time_zone_offset.

◆ gmt_sec_to_TIME() [2/2]

void Time_zone::gmt_sec_to_TIME ( MYSQL_TIME tmp,
my_timeval  tv 
) const
inline

Converts UTC epoch seconds and microseconds to time in MYSQL_TIME representation.

Parameters
[in]tvnumber of seconds and microseconds in UNIX epoch
[out]tmpequivalent time point in MYSQL_TIME representation

◆ TIME_to_gmt_sec()

virtual my_time_t Time_zone::TIME_to_gmt_sec ( const MYSQL_TIME t,
bool *  in_dst_time_gap 
) const
pure virtual

Converts local time in MYSQL_TIME representation to my_time_t (UTC seconds since Epoch) representation.

Returns 0 in case of error. Sets in_dst_time_gap to true if date provided falls into spring time-gap (or lefts it untouched otherwise).

Implemented in Time_zone_system, Time_zone_utc, Time_zone_db, and Time_zone_offset.


The documentation for this class was generated from the following files: