BDE 4.14.0 Production release
|
Provide an attribute class to configure ISO 8601 string generation.
This component provides an unconstrained (value-semantic) attribute class, bdlt::Iso8601UtilConfiguration
, that may be used to configure various aspects of generated ISO 8601 strings.
fractionalSecondPrecision
: number of digits used to represent fractional seconds; must be in the range 0 .. 6
.omitColonInZoneDesignator
: true
if :
should be omitted from zone designators.useCommaForDecimalSign
: true
if ,
should be used as the decimal sign in fractional seconds; otherwise, .
should be used.useZAbbreviationForUtc
: true
if Z
should be used for the zone designator instead of +00:00
(specific to UTC).This component also provides a (process-wide) default configuration that may be set and retrieved via the setDefaultConfiguration
and defaultConfiguration
class methods, respectively. See Usage Example 2 for further details.
This section illustrates intended use of this component.
This example demonstrates creation of a bdlt::Iso8601UtilConfiguration
object that may be used to influence the format of the output produced by a hypothetical utility, my::Iso8601Util
, that generates and parses ISO 8601 strings for bdlt
vocabulary types (see bdlt_iso8601util , which provides just such functionality). In particular, suppose that given a sample bdlt::TimeTz
object:
my::Iso8601Util
produces, by default, the following (valid) ISO 8601 string:
However, we would like to produce the following (also valid) ISO 8601 string instead:
bdlt::Iso8601UtilConfiguration
can be used to obtain the desired result assuming that my::Iso8601Util
uses bdlt::Iso8601UtilConfiguration
to affect the format of generated strings in this fashion (e.g., again see bdlt_iso8601util ).
First, we construct a bdlt::Iso8601UtilConfiguration
object that has the default value:
Then, we modify configuration
to indicate that we want to use ,
as the decimal sign (in fractional seconds):
Finally, we modify configuration
to indicate that we want to omit the :
in zone designators:
Our configuration
object can now be supplied to my::Iso8601Util
to produce the desired result.
This example demonstrates how to establish the process-wide default configuration.
First, we retrieve the default configuration in effect at process start-up and note that it has the default-constructed value:
Next, we modify configuration
to indicate that we want to output Z
when the zone designator is UTC (i.e., instead of +00:00
):
Then, we modify configuration
to display milliseconds:
Now, we set the default configuration to the value of our configuration
object:
Finally, we verify that the default configuration was updated as expected:
Note that the expected usage is that the process-wide configuration will be established once, early in main
, and not changed throughout the lifetime of a process.