|
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.