Class DT_TIME_ZONE |

    note

>     description:

>         "Time zones"

>     library:    "Gobo Eiffel Time Library"
>     copyright:  "Copyright (c) 2001, Eric Bezault and others"
>     license:    "MIT License"

    deferred class interface

>     DT_TIME_ZONE

    feature -- Access

>     name: STRING
>             -- Time zone name

>     abbreviation: STRING
>             -- Time zone abbreviation

>     offset: DT_TIME_DURATION
>             -- GMT offset

    feature -- Conversion

>     date_time_to_utc (a_date_time: DT_DATE_TIME): DT_DATE_TIME
>             -- Convert a_date_time, considered to be relative to current
>             -- time zone, into the same time but relative to UTC.
>             -- (Create a new date_time object at each call.)
>         require
>             a_date_time_not_void: a_date_time /= Void
>         ensure
>             date_time_not_void: Result /= Void

>     date_time_from_utc (a_date_time: DT_DATE_TIME): DT_DATE_TIME
>             -- Convert a_date_time, considered to be relative to UTC,
>             -- into the same time but relative to current time zone.
>             -- (Create a new date_time object at each call.)
>         require
>             a_date_time_not_void: a_date_time /= Void
>         ensure
>             date_time_not_void: Result /= Void

>     date_time_from (a_date_time: DT_DATE_TIME; a_time_zone: DT_TIME_ZONE): DT_DATE_TIME
>             -- Convert a_date_time, considered to be relative to a_time_zone,
>             -- into the same time but relative to current time zone.
>             -- (Create a new date_time object at each call.)
>         require
>             a_date_time_not_void: a_date_time /= Void
>             a_time_zone_not_void: a_time_zone /= Void
>         ensure
>             date_time_not_void: Result /= Void

>     convert_to_utc (a_date_time: DT_DATE_TIME)
>             -- Convert a_date_time, considered to be relative to current
>             -- time zone, into the same time but relative to UTC.
>             -- (a_date_time will be altered by the call.)
>         require
>             a_date_time_not_void: a_date_time /= Void
>         deferred

>     convert_from_utc (a_date_time: DT_DATE_TIME)
>             -- Convert a_date_time, considered to be relative to UTC,
>             -- into the same time but relative to current time zone.
>             -- (a_date_time will be altered by the call.)
>         require
>             a_date_time_not_void: a_date_time /= Void
>         deferred

    invariant

>     name_not_void: name /= Void
>     abbreviation_not_void: abbreviation /= Void
>     offset_not_void: offset /= Void

    end -- class DT_TIME_ZONE