ALib C++ Framework
by
Library Version: 2605 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
calendar.hpp
Go to the documentation of this file.
1//==================================================================================================
2/// \file
3/// This header-file is part of sub-namespace #"alib::strings::util;3" of module \alib_strings of
4/// the \aliblong.
5///
6/// Copyright 2013-2026 A-Worx GmbH, Germany.
7/// Published under #"mainpage_license".
8//==================================================================================================
9ALIB_EXPORT namespace alib { namespace strings::util {
10
11//==================================================================================================
12/// This class represents a point in time as a set of calendar and clock values
13/// (year, month, day, hour, ...).
14/// It provides methods to convert to and from objects of type #"time::DateTime".
15/// In addition, a method to format the date and time into human-readable string value is available.
16///
17/// \note
18/// The conversion from and into objects of type #"Ticks" is intentionally not supported.
19/// In the case that such objects should be used with this class, an additional conversion
20/// step has to be performed using class #"TickConverter". In other words, conversion can
21/// be performed as follows:
22///
23/// CalendarDateTime <=> DateTime <=> Ticks
24/// <p>
25/// \note
26/// This class is using system-specific calendar methods and relies on the locale and time zone
27/// settings of the machine.
28//==================================================================================================
30 public:
31 /// A list of month names used with the method
32 /// #"CalendarDateTime::Format".
33 ///
34 /// If module \alib_camp is not included in the \alibbuild, the values default to:
35 /// \snippet "strings/util/calendar.cpp" CDT_MONTH_NAMES
36 /// In case the module is included, the same values are resourced in #"BASECAMP;2"
37 /// under key <c>"Months"</c>. In both cases a user might change this during bootstrap.
39
40 /// A list of day names used with the method #"CalendarDateTime::Format".
41 ///
42 /// If module \alib_camp is not included in the \alibbuild, the values default to:
43 /// \snippet "strings/util/calendar.cpp" CDT_DAY_NAMES
44 /// In case the module is included, the same values are resourced in #"BASECAMP;2"
45 /// under key <c>"Days"</c>. In both cases a user might change this during bootstrap.
47
48 /// The calendar year (e.g., 2022).
49 int Year;
50
51 /// The calendar month (1..12).
52 int Month;
53
54 /// The calendar day (1..31).
55 int Day;
56
57 /// The calendar hour (0..23).
58 int Hour;
59
60 /// The calendar minute (0..59).
61 int Minute;
62
63 /// The calendar second (0..59).
64 int Second;
65
66 /// The calendar millisecond (0..999).
68
69 /// The calendar day of week (0==Sunday..6==Saturday).
70 /// \attention This value is only set when constructed with a #"%time::DateTime" object and
71 /// set to \c -1 if constructed with single values, or if method #".Clear" is
72 /// invoked.
74 /// Constructs an unset object.
75 /// @param init If #"%Initialization::Default" or \e nulled, #".Clear" is invoked.
76 /// Otherwise fields are not initialized.
77 /// Defaults to \c Initialization::Default.
83
84 /// Constructs the object according to the given timestamp object and time zone.
85 /// @param timeStamp The point in time to use for setting the public fields
86 /// @param timezone Denotes if the time that is calculated should be local or UTC.
87 /// Defaults to \c TimeZone::Local.
89 { Set( timeStamp, timezone ); }
90
91 /// Constructs the object according to the given date and time values.
92 /// @param year The year of the calendar time.
93 /// @param month The month of the calendar time.
94 /// @param day The day of the calendar time.
95 /// @param hour The hour of the calendar time.
96 /// @param minute The minute of the calendar time.
97 /// @param second The second of the calendar time.
98 /// @param millisecond The millisecond of the calendar time.
99 CalendarDateTime( int year , int month= 1 , int day= 1,
100 int hour= 0, int minute= 0, int second= 0, int millisecond= 0 )
101 : Year ( year )
102 , Month ( month )
103 , Day ( day )
104 , Hour ( hour )
105 , Minute ( minute )
106 , Second ( second )
107 , Millisecond ( millisecond)
108 , DayOfWeek ( -1 ) {}
109
110 /// Sets the public fields according to the given timestamp object.
111 /// @param timeStamp The point in time to use for setting the public fields
112 /// @param timezone Denotes if the time that is calculated should be local or UTC.
113 /// Defaults to \c TimeZone::Local.
115 void Set( const DateTime& timeStamp, lang::Timezone timezone =lang::Timezone::Local );
116
117 /// Creates a #"%time::DateTime" object from this calendar date.
118 /// \attention
119 /// The resolution and possible time range of class #"%time::DateTime" is platform-dependent.
120 /// This method must not be used if inconsistent values are stored.
121 ///
122 /// @param timezone Denote if the time that is calculated should be local or UTC.
123 /// Defaults to \c TimeZone::Local.
124 /// @returns The point in time represented by the public fields of this class.
127
128 /// Sets all public values to \c 0.
130 void Clear();
131
132 /// Formats the date using a given pattern string. Within the pattern string, different symbols
133 /// are interpreted as tokens. The format is compatible with C# time format strings, as well as
134 /// with class SimpleDateFormat of the Java APIs.<br>
135 /// Strings within the format text that should not be interpreted as tokens may be surrounded
136 /// by single quotes.
137 /// Strings within the format text that should not be interpreted as tokens may be given
138 /// in single quotes.
139 /// Two consecutive single quotes will be replaced to one single quote.<br>
140 ///
141 /// <center>Token</center> | <center>Description</center>
142 /// - - - - -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
143 /// y |The year with as many digits as it has (for current dates this is 4).
144 /// yy |The year, truncated to 2 digits (modulo 100).
145 /// yyy...y |The year with a minimum number of digits as the number of y-characters given.
146 /// M |The month as numbers from 1..12.
147 /// MM |The month as numbers from 01..12.
148 /// MMM |The month as abbreviated, 3-digit word defined by resourced strings (defaults to English language).
149 /// MMMM |The month as word defined by resourced strings (defaults to English language).
150 /// d |The day as numbers from 1..31.
151 /// dd |The day as numbers from 01..31.
152 /// ddd |The day as abbreviated, 3-digit word defined by resourced strings (defaults to English language).
153 /// dddd |The day as word defined by resourced strings (defaults to English language).
154 /// H |The hour as numbers from 0..23.
155 /// HH |The hour as numbers from 00..23.
156 /// K |The hour as numbers from 0..11 am/pm.
157 /// KK |The hour as numbers from 00..11 am/pm.
158 /// m |The minute as numbers from 0..59.
159 /// mm |The minute as numbers from 00..59.
160 /// s |The second as numbers from 0..59.
161 /// ss |The second as numbers from 00..59.
162 ///
163 /// @param format The format pattern string.
164 /// @param target A reference to an AString that gets the result of the format processing
165 /// appended.
166 /// @param targetData If \c CurrentData::Keep (the default) the string is appended to \p{target}.
167 /// if \c CurrentData::Clear, \p{target} is cleared.
168 /// @returns \p{target} (for convenience).
172};
173
174//==================================================================================================
175/// This class represents a time span, measured in human units like days, hours, minutes, and so on.
176/// Besides conversion from and to nanoseconds, conversions from and to objects of types
177/// #"TimePointBase::Duration;DateTime::Duration" and
178/// #"TimePointBase::Duration;Ticks::Duration" is supported.
179//==================================================================================================
181 public:
182 /// The number of days within the duration
183 int Days;
184
185 /// The number of hours (not the total, hence 0-23) within the duration.
186 int Hours;
187
188 /// The number of minutes (not the total, hence 0-59) within the duration.
190
191 /// The number of seconds (not the total, hence 0-59) within the duration.
193
194 /// The number of milliseconds (not the total, hence 0-999) within the duration.
196
197 /// The number of microseconds (not the total, hence 0-999) within the duration.
199
200 /// The number of nanoseconds (not the total, hence 0-999) within the duration.
202
203 /// Constructs the object to represent a duration of 0. (Sets all public fields to 0.)
204 /// @param init If #"%Initialization::Default" or #"%Nulled", #".Clear" is invoked.
205 /// Otherwise fields are not initialized.
206 /// Defaults to #"%Initialization::Default".
212
213 /// Constructs the object using the given duration measured in nanoseconds.
214 /// Invokes #"FromNanoSeconds".
215 /// @param nanos The duration to use for setting the public fields.
216 CalendarDuration( int64_t nanos ) { FromNanoSeconds( nanos ); }
217
218 /// Constructs the object using the given duration object.
219 /// Invokes #".FromDuration(DateTime::Duration)".
220 /// @param duration The duration to use for setting the public fields.
221 CalendarDuration( DateTime::Duration duration ) { FromDuration( duration ); }
222
223 /// Constructs the object using the given duration object.
224 /// Invokes #".FromDuration(Ticks::Duration)".
225 /// @param duration The duration to use for setting the public fields.
226 CalendarDuration( Ticks::Duration duration ) { FromDuration( duration ); }
227
228 /// Sets the public fields to represent the given duration value.
229 /// The state of the object will hereafter be the same as it was when constructed with the same
230 /// parameter.
231 /// @param duration The duration to use for setting the public fields.
232 void FromDuration( DateTime::Duration duration )
233 { FromNanoSeconds( duration.InNanoseconds() ); }
234
235 /// Sets the public fields to represent the given duration value.
236 /// The state of the object will hereafter be the same as it was when constructed with the same
237 /// parameter.
238 /// @param duration The duration to use for setting the public fields.
239 void FromDuration( Ticks::Duration duration )
240 { FromNanoSeconds( duration.InNanoseconds() ); }
241
242 /// Takes the current values of the public fields and returns a duration value compatible with
243 /// class #"%time::DateTime".
244 /// @returns The duration represented by the public fields of this class.
245 DateTime::Duration ToDateTimeDuration()
246 { return DateTime::Duration::FromNanoseconds( ToNanoSeconds() ); }
247
248 /// Takes the current values of the public fields and returns a duration value compatible with
249 /// class #"%Ticks".
250 /// @returns The duration represented by the public fields of this class.
251 Ticks::Duration ToTicksDuration()
252 { return Ticks::Duration::FromNanoseconds( ToNanoSeconds() ); }
253
254 /// Sets the public fields to represent the given duration value.
255 /// The state of the object will hereafter be the same as it was when constructed with the same
256 /// parameter.
257 /// @param nanos The duration to use for setting the public fields.
258 ALIB_DLL void FromNanoSeconds( int64_t nanos );
259
260 /// Takes the current values of the public fields and returns the duration.
261 /// @returns The duration represented by the public fields of this class in nanoseconds.
262 ALIB_DLL int64_t ToNanoSeconds();
263
264 /// Sets all public values to 0.
265 ALIB_DLL void Clear();
266};
267
268//==================================================================================================
269/// Represents a date in the systems calendar without the provision of a clock time.
270/// This class internally uses types #"time::DateTime" and #"util::CalendarDateTime"
271/// to perform operators <c>+</c>, <c>-</c>, <c>+=</c> and <c>-=</c>, but is much more efficient
272/// with in- and decrement operators <c>++</c> and <c>--</c>. Furthermore it uses only 32-bits of
273/// storage.
274///
275/// Besides storing clock-time agnostic date values, the type is useful to securely iterate over
276/// dates, because there is no risk of false comparisons due to mixed time-zone and daylight
277/// saving properties and in general due to arbitrarily set clock times.
278///
279/// Another small difference is that field #"CalendarDate;DayOfWeek" is always
280/// kept in a reliable (correct) state, which is not the case with field
281/// #"CalendarDateTime::DayOfWeek".
282///
283/// Internally, the values are stored a 32-bit storage word using the following scheme
284/// - bits 1-3 encode the day of week (from 0 (= Sunday) to 6 (= Saturday)
285/// - bits 4-8 encode the calendar day (1..31)
286/// - bits 9-12 encode the calendar month (1..12)
287/// - bits 13-32 encode the calendar year
288/// consequently, for the calendar year 20 bits are available, which evaluates to a range of
289/// \b 1,048,576 years.
290/// For simplicity and speed, the values are \b not defined in accordance to class
291/// #"util::CalendarDateTime", where a value of \c 0 represents year \b 1900.
292/// This class just stores the year value as is and does not allow negative values.
293/// As a result, this class is capable of storing values between <b>1/1/0000</b> and
294/// <b>12/31/1,048,576</b>.
295//==================================================================================================
297 protected:
298 uint32_t stamp; ///< Encoded date value.
299
300 //################################################################################################
301 // Conversion to time platform/language specific values
302 //################################################################################################
303 public:
304 /// Default constructor leaving this object uninitialized (random value).
305 CalendarDate() =default;
306
307 /// Trivial default copy constructor.
308 CalendarDate( const CalendarDate& ) noexcept =default;
309
310 /// Trivial default move constructor.
311 CalendarDate( CalendarDate&& ) noexcept =default;
312
313 /// Trivial default copy assign operator.
314 /// @return A reference to \c this.
315 CalendarDate& operator=( const CalendarDate& ) noexcept =default;
316
317 /// Trivial default move assign operator.
318 /// @return A reference to \c this.
319 CalendarDate& operator=( CalendarDate&& ) noexcept =default;
320
321 /// Trivial default destructor.
322 ~CalendarDate() noexcept =default;
323
324 /// Constructor taking the date as separated values.
325 /// @param year The year to use. Must be between 0 and 1,048,575
326 /// @param month The month to use. Must be between 1 and 12
327 /// @param day The day to use. Must be between 1 and 31
328 /// @param dayOfWeek The day of week that results from the previous values.
329 /// Defaults to \c -1 which instructs this constructor to retrieve that
330 /// correct value.<br>
331 /// If given, values must be between 0 (Sunday) and 6 (Saturday).
332 /// In debug compilations an assertion will be raised if the
333 /// value is out of range or inconsistent.
334 CalendarDate(int year, int month, int day, int dayOfWeek= -1)
335 { Set( year, month, day, dayOfWeek ); }
336
337 /// Constructor creating a date that represents "today".
338 /// @param timezone Determines whether the local time zone should be used or UTC.
339 explicit
342
343 /// Constructor taking a #"%time::DateTime" value.
344 /// @param calendarDateTime The value to take the date from.
345 ALIB_DLL explicit
346 CalendarDate( const CalendarDateTime& calendarDateTime ) {
347 Set( calendarDateTime.Year
348 ,calendarDateTime.Month
349 ,calendarDateTime.Day
350 ,calendarDateTime.DayOfWeek );
351 }
352
353 /// Constructor taking a #"%time::DateTime" value.
354 /// @param dateTime The value to take the date from.
355 /// @param timezone Determines whether the local time zone should be used or UTC.
356 CalendarDate( const DateTime& dateTime, lang::Timezone timezone ) { Set( dateTime, timezone); }
357
358
359 /// Sets this class to the given values.
360 /// @param year The year to use. Must be between 0 and 1,048,575
361 /// @param month The month to use. Must be between 1 and 12
362 /// @param day The day to use. Must be between 1 and 31
363 /// @param dayOfWeek The day of week that results from the previous values.
364 /// Defaults to \c -1 which instructs this constructor to retrieve that
365 /// correct value.<br>
366 /// If given, values must be between 0 (Sunday) and 6 (Saturday).
367 /// In debug compilations an assertion will be raised if the
368 /// value is out of range or inconsistent.
370 void Set( int year, int month, int day, int dayOfWeek= -1);
371
372 /// Sets this class to the date represented by the given #"%time::DateTime" instance.
373 /// @param dateTime The value to take the date from.
374 /// @param timezone Determines whether the local time zone applies to \p{dateTime} or
375 /// whether it refers to UTC.
377 void Set( const DateTime& dateTime, lang::Timezone timezone );
378
379 /// Creates a #"%time::DateTime" object from this calendar date.
380 /// \attention
381 /// The resolution and possible time range of class #"%time::DateTime" is platform-dependent.
382 /// This method must not be used if inconsistent values are stored.
383 ///
384 /// @param timezone Denote if the time that is calculated should be local or UTC.
385 /// Defaults to \c TimeZone::Local.
386 /// @param hour The hour of day (0..23) that the value returned should represent.
387 /// Defaults to noon time (\c 12).
388 /// @param minute The minute of the hour (0..59) that the value returned should represent.
389 /// Defaults to \c 0.
390 /// @param second The second of the minute (0..59) that the value returned should
391 /// represent. Defaults to \c 0.
392 /// @returns The point in time represented by this class and the given clock values.
395 int hour= 12, int minute= 0, int second= 0 ) const;
396
397 /// Returns a date and time value, by adding 12 o'clock noon time.
398 /// @return A corresponding #"%time::DateTime" value.
401
402 //---------------------------- Year(), Month(), Day(), DayOfWeek() ---------------------------
403 /// Extracts the day of month from this date as a value between \c 1 and \c 31.
404 /// @return The calendar day of month.
405 int Year() const { return int( stamp >> 12 ); }
406
407 /// Extracts the month from this date as a value between \c 1 and \c 12.
408 /// @return The calendar day of month.
409 int Month() const { return int( (stamp >> 8) & 15 ); }
410
411 /// Extracts the day of month from this date as a value between \c 1 and \c 31.
412 /// @return The calendar day of month.
413 int Day() const { return int( (stamp >> 3) & 31 ); }
414
415 /// Extracts the day of week from this date as a value between \c 0 (representing sunday)
416 /// and \c 6 (representing Saturday) in accordance with field
417 /// #"CalendarDateTime::DayOfWeek".
418 /// @return The calendar day of month.
419 int DayOfWeek() const { return int( stamp & 7 ); }
420
421 //--------------------------------------------- +/ -------------------------------------------
422
423 /// Adds the given number of days to this date.
424 /// @param daysToAdd The days to add. May be negative for subtraction.
425 /// @return A copy of this object after modification.
427 CalendarDate operator+ ( int daysToAdd ) const;
428
429 /// Subtracts the given number of days to this date.
430 /// @param daysToSubtract The days to add. May be negative for additions.
431 /// @return A copy of this object after modification.
432 CalendarDate operator- ( int daysToSubtract ) const { return (*this) + (-daysToSubtract); }
433
434 /// Prefix increment operator.
435 /// @return A copy of this object after modification.
438
439 /// Prefix decrement operator.
440 /// @return A copy of this object after modification.
443
444 /// Postfix increment operator.
445 /// @return A copy of this object before its modification.
447 auto tmp = *this;
448 ++(*this);
449 return tmp;
450 }
451
452 /// Postfix decrement operator.
453 /// @return A copy of this object before its modification.
455 auto tmp = *this;
456 --(*this);
457 return tmp;
458 }
459
460 /// Adds the given number of days to this date.
461 /// @param daysToAdd The days to add. May be negative for subtraction.
462 /// @return A copy of this object after modification.
463 CalendarDate operator+=( int daysToAdd ) { return (*this)= (*this) + daysToAdd; }
464
465 /// Subtracts the given number of days to this date.
466 /// @param daysToSubtract The days to add. May be negative for additons.
467 /// @return A copy of this object after modification.
468 CalendarDate operator-=( int daysToSubtract ) { return (*this)+= (- daysToSubtract); }
469
470
471 //----------------------------------------- Comparison ---------------------------------------
472 /// Equal to operator.
473 /// @param other The date stamp to compare.
474 /// @return The result of the comparison.
475 bool operator==( const CalendarDate& other ) const { return stamp == other.stamp; }
476
477 /// Not equal to operator.
478 /// @param other The date stamp to compare.
479 /// @return The result of the comparison.
480 bool operator!=( const CalendarDate& other ) const { return stamp != other.stamp; }
481
482 /// Less than operator.
483 /// @param other The date stamp to compare.
484 /// @return A reference to this object.
485 bool operator<( const CalendarDate& other ) const { return stamp < other.stamp; }
486
487 /// Less than or equal to operator.
488 /// @param other The date stamp to compare.
489 /// @return The result of the comparison.
490 bool operator<=( const CalendarDate& other ) const
491 { return stamp <= other.stamp; }
492
493 /// Greater than operator.
494 /// @param other The date stamp to compare.
495 /// @return The result of the comparison.
496 bool operator>( const CalendarDate& other ) const { return stamp > other.stamp; }
497
498 /// Greater than or equal to operator.
499 /// @param other The date stamp to compare.
500 /// @return The result of the comparison.
501 bool operator>=( const CalendarDate& other ) const
502 { return stamp >= other.stamp; }
503}; // class CalendarDate
504
505
506} // namespace alib[::strings::util]
507
508/// Type alias in namespace #"%alib".
510
511/// Type alias in namespace #"%alib".
513
514/// Type alias in namespace #"%alib".
516
517} // namespace [alib]
#define ALIB_DLL
#define ALIB_EXPORT
int Minute
The calendar minute (0..59).
Definition calendar.hpp:61
void Set(const DateTime &timeStamp, lang::Timezone timezone=lang::Timezone::Local)
Definition calendar.cpp:49
int Second
The calendar second (0..59).
Definition calendar.hpp:64
CalendarDateTime(const DateTime &timeStamp, lang::Timezone timezone=lang::Timezone::Local)
Definition calendar.hpp:88
int Day
The calendar day (1..31).
Definition calendar.hpp:55
CalendarDateTime(lang::Initialization init=lang::Initialization::Default)
Definition calendar.hpp:78
AString & Format(Substring format, AString &target, lang::CurrentData targetData=lang::CurrentData::Keep) const
Definition calendar.cpp:268
int Hour
The calendar hour (0..23).
Definition calendar.hpp:58
int Year
The calendar year (e.g., 2022).
Definition calendar.hpp:49
CalendarDateTime(int year, int month=1, int day=1, int hour=0, int minute=0, int second=0, int millisecond=0)
Definition calendar.hpp:99
DateTime Get(lang::Timezone timezone=lang::Timezone::Local) const
Definition calendar.cpp:87
void Clear()
Sets all public values to 0.
Definition calendar.cpp:38
int Month
The calendar month (1..12).
Definition calendar.hpp:52
int Millisecond
The calendar millisecond (0..999).
Definition calendar.hpp:67
bool operator>(const CalendarDate &other) const
Definition calendar.hpp:496
CalendarDate()=default
Default constructor leaving this object uninitialized (random value).
void Set(int year, int month, int day, int dayOfWeek=-1)
Definition calendar.cpp:185
bool operator==(const CalendarDate &other) const
Definition calendar.hpp:475
CalendarDate(const CalendarDateTime &calendarDateTime)
Definition calendar.hpp:346
CalendarDate operator-(int daysToSubtract) const
Definition calendar.hpp:432
CalendarDate(const DateTime &dateTime, lang::Timezone timezone)
Definition calendar.hpp:356
bool operator!=(const CalendarDate &other) const
Definition calendar.hpp:480
uint32_t stamp
Encoded date value.
Definition calendar.hpp:298
CalendarDate(const CalendarDate &) noexcept=default
Trivial default copy constructor.
CalendarDate operator+=(int daysToAdd)
Definition calendar.hpp:463
CalendarDateTime ToCalendarDateTime() const
CalendarDate operator-=(int daysToSubtract)
Definition calendar.hpp:468
CalendarDate(CalendarDate &&) noexcept=default
Trivial default move constructor.
DateTime Get(lang::Timezone timezone=lang::Timezone::Local, int hour=12, int minute=0, int second=0) const
Definition calendar.cpp:211
bool operator<=(const CalendarDate &other) const
Definition calendar.hpp:490
bool operator>=(const CalendarDate &other) const
Definition calendar.hpp:501
CalendarDate(lang::Timezone timezone)
Definition calendar.hpp:340
CalendarDate operator+(int daysToAdd) const
Definition calendar.cpp:214
bool operator<(const CalendarDate &other) const
Definition calendar.hpp:485
CalendarDuration(lang::Initialization init=lang::Initialization::Default)
Definition calendar.hpp:207
CalendarDuration(DateTime::Duration duration)
Definition calendar.hpp:221
int Seconds
The number of seconds (not the total, hence 0-59) within the duration.
Definition calendar.hpp:192
CalendarDuration(Ticks::Duration duration)
Definition calendar.hpp:226
int Hours
The number of hours (not the total, hence 0-23) within the duration.
Definition calendar.hpp:186
int Nanoseconds
The number of nanoseconds (not the total, hence 0-999) within the duration.
Definition calendar.hpp:201
int Minutes
The number of minutes (not the total, hence 0-59) within the duration.
Definition calendar.hpp:189
void FromDuration(DateTime::Duration duration)
Definition calendar.hpp:232
int Milliseconds
The number of milliseconds (not the total, hence 0-999) within the duration.
Definition calendar.hpp:195
void Clear()
Sets all public values to 0.
Definition calendar.cpp:137
DateTime::Duration ToDateTimeDuration()
Definition calendar.hpp:245
void FromDuration(Ticks::Duration duration)
Definition calendar.hpp:239
int Microseconds
The number of microseconds (not the total, hence 0-999) within the duration.
Definition calendar.hpp:198
int Days
The number of days within the duration.
Definition calendar.hpp:183
@ Keep
Chooses not no clear existing data.
Initialization
Used, for example, with constructors that allow to suppress initialization of members.
Timezone
Denotes whether a time value represents local time or UTC.
@ Local
Denotes local time.
Definition alox.cpp:14
strings::TString< character > String
Type alias in namespace #"%alib".
Definition string.hpp:2165
strings::TSubstring< character > Substring
Type alias in namespace #"%alib".
strings::util::CalendarDate CalendarDate
Type alias in namespace #"%alib".
Definition calendar.hpp:515
strings::util::CalendarDateTime CalendarDateTime
Type alias in namespace #"%alib".
Definition calendar.hpp:509
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace #"%alib".
time::DateTime DateTime
Type alias in namespace #"%alib".
Definition datetime.hpp:188
strings::util::CalendarDuration CalendarDuration
Type alias in namespace #"%alib".
Definition calendar.hpp:512