[#BloombergLP-baltzo-Zoneinfo]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/baltzo.adoc[baltzo]::Zoneinfo
:relfileprefix: ../../
:mrdocs:

This class is a value&hyphen;semantic type holding a structured representation of the information contained in an Zoneinfo (or &quot;Olson&quot;) time zone database for a _single_ locale (e&period;g&period;, &quot;America&sol;New&lowbar;York&quot;)&period; The salient attributes of this type are the string identifier and the ordered sequence of `ZoneinfoTransition` objects&period;

== Synopsis

Declared in `&lt;baltzo&lowbar;zoneinfo&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class Zoneinfo;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/baltzo/Zoneinfo/TransitionConstIterator.adoc[`TransitionConstIterator`] 
| Alias for a bi&hyphen;directional `const` iterator over the sequence of transitions maintained by a `Zoneinfo` object&period;
| xref:BloombergLP/baltzo/Zoneinfo/allocator_type.adoc[`allocator&lowbar;type`] 
| Allocator type used by this class&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/baltzo/Zoneinfo/2constructor-002.adoc[`Zoneinfo`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/baltzo/Zoneinfo/operator_assign-0b.adoc[`operator&equals;`] 
| Assignment operators
| xref:BloombergLP/baltzo/Zoneinfo/addTransition.adoc[`addTransition`] 
| Add to this object a transition occurring at the specified `utcTime` when the local time in the described time&hyphen;zone adopts the characteristics of the specified `descriptor`&period; If a transition at `utcTime` is already present, replace it&apos;s local&hyphen;time descriptor with `descriptor`&period;
| xref:BloombergLP/baltzo/Zoneinfo/allocator.adoc[`allocator`] 
| Return the allocator used by this object to supply memory&period; Note that if no allocator was supplied at construction the currently installed default allocator is used&period;
| xref:BloombergLP/baltzo/Zoneinfo/beginTransitions.adoc[`beginTransitions`] 
| Return an iterator providing non&hyphen;modifiable access to the first transition in the ordered sequence of transitions maintained by this object&period; Note that if `beginTransitions() &equals;&equals; endTransitions()` then there are no transitions stored by this object&period;
| xref:BloombergLP/baltzo/Zoneinfo/endTransitions.adoc[`endTransitions`] 
| Return an iterator providing non&hyphen;modifiable access to the one&hyphen;past the last transition in the ordered sequence of transitions that is associated with this object&period; Note that if `beginTransitions() &equals;&equals; endTransitions()` then there are no transitions stored by this object&period;
| xref:BloombergLP/baltzo/Zoneinfo/findTransitionForUtcTime.adoc[`findTransitionForUtcTime`] 
| Return an iterator providing non&hyphen;modifiable access to the transition that holds the local&hyphen;time descriptor associated with the specified `utcTime`&period; The behavior is undefined unless `numTransitions() &gt; 0` and `utcTime` is at or after the transition returned by `firstTransition`&period;
| xref:BloombergLP/baltzo/Zoneinfo/firstTransition.adoc[`firstTransition`] 
| Return a reference providing non&hyphen;modifiable access to the first transition contained in this object&period; The behavior is undefined unless `numTransitions() &gt; 0`&period;
| xref:BloombergLP/baltzo/Zoneinfo/get_allocator.adoc[`get&lowbar;allocator`] 
| Return the allocator used by this object to supply memory&period; Note that if no allocator was supplied at construction the default allocator in effect at construction is used&period;
| xref:BloombergLP/baltzo/Zoneinfo/identifier.adoc[`identifier`] 
| Return a reference providing non&hyphen;modifiable access to the `identifier` attribute of this object&period;
| xref:BloombergLP/baltzo/Zoneinfo/numTransitions.adoc[`numTransitions`] 
| Return the number of transitions maintained by this zone info&period;
| xref:BloombergLP/baltzo/Zoneinfo/posixExtendedRangeDescription.adoc[`posixExtendedRangeDescription`] 
| Return a reference providing non&hyphen;modifiable access to the `posixExtendedRangeDescription` attribute of this object, used to describe local time transitions far in the future (see &lcub;posixExtendedRangeDescription&rcub;)&period;
| xref:BloombergLP/baltzo/Zoneinfo/print.adoc[`print`] 
| Write the value of this object to the specified output `stream` in a human&hyphen;readable format, and return a reference to `stream`&period; Optionally specify an initial indentation `level`, whose absolute value is incremented recursively for nested objects&period; If `level` is specified, optionally specify `spacesPerLevel`, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects&period; If `level` is negative, suppress indentation of the first line&period; If `spacesPerLevel` is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by `level`)&period; If `stream` is not valid on entry, this operation has no effect&period; Note that the format is not fully specified, and can change without notice&period;
| xref:BloombergLP/baltzo/Zoneinfo/setIdentifier-0b.adoc[`setIdentifier`] 
| `setIdentifier` overloads
| xref:BloombergLP/baltzo/Zoneinfo/setPosixExtendedRangeDescription-06.adoc[`setPosixExtendedRangeDescription`] 
| `setPosixExtendedRangeDescription` overloads
| xref:BloombergLP/baltzo/Zoneinfo/swap.adoc[`swap`] 
| Efficiently exchange the value of this object with the value of the specified `other` object&period; This method provides the no&hyphen;throw exception&hyphen;safety guarantee&period; The behavior is undefined unless this object was created with the same allocator as `other`&period;
| xref:BloombergLP/baltzo/Zoneinfo/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;Zoneinfo, UsesBslmaAllocator&gt;`] 
| Nested trait declaration for `bslma&colon;&colon;UsesBslmaAllocator`&period;
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/baltzo/operator_eq-0c.adoc[BloombergLP::baltzo::operator&equals;&equals;]`
| Return `true` if the specified `lhs` and `rhs` objects have the same value, and `false` otherwise&period; Two `Zoneinfo` objects have the same value if the corresponding value of their `identifier` attribute is the same and if both store the same sequence of transitions, ordered by time&period;
|===

== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/baltzo/operator_not_eq-03.adoc[`operator!&equals;`]
| Return `true` if the specified `lhs` and `rhs` objects do not have the same value, and `false` otherwise&period; Two `Zoneinfo` objects do not have the same value if their corresponding `identifier` attribute does not have the same value, or if both do _not_ store the same sequence of transitions, ordered by time&period;
| xref:BloombergLP/baltzo/swap-096.adoc[`swap`]
| Exchange the values of the specified `a` and `b` objects&period; This function provides the no&hyphen;throw exception&hyphen;safety guarantee if the two objects were created with the same allocator and the basic guarantee otherwise&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
