[#BloombergLP-bdlt-PackedCalendar_DateRef] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlt.adoc[bdlt]::PackedCalendar_DateRef :relfileprefix: ../../ :mrdocs: This private class is used by the arrow operator of the holiday iterator and business day iterator classes. The objects instantiated from this class serve as references to `Date` objects. == Synopsis Declared in `<bdlt_packedcalendar.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class PackedCalendar_DateRef : public xref:BloombergLP/bdlt/Date.adoc[Date] ---- == Base Classes [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/bdlt/Date.adoc[Date]` | This class implements a complex‐constrained, value‐semantic type for representing dates according to the Unix (POSIX) calendar. Each object of this class _always_ represents a _valid_ date value in the range `[0001JAN01 .. 9999DEC31]` inclusive. The interface of this class supports `Date` values expressed in terms of either year/month/day (the canonical representation) or year/day‐of‐year (an alternate representation). See []Date Values and Their Representations) for details. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlt/PackedCalendar_DateRef/2constructor-0b8.adoc[`PackedCalendar_DateRef`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bdlt/PackedCalendar_DateRef/2destructor.adoc[`~PackedCalendar_DateRef`] [.small]#[destructor]# | Destroy this object. | xref:BloombergLP/bdlt/Date/operator_assign.adoc[`operator=`] | Assign to this object the value of the specified `rhs` date, and return a reference providing modifiable access to this object. | xref:BloombergLP/bdlt/Date/addDaysIfValid.adoc[`addDaysIfValid`] | Set this object to have the value that is later by the specified (signed) `numDays` from its current value, if the resulting value falls within the range of dates supported by this class (see `isValidYearMonthDay`). Return 0 on success, and a non‐zero value (with no effect) otherwise. Note that `numDays` may be negative. | xref:BloombergLP/bdlt/Date/bdexStreamIn.adoc[`bdexStreamIn`] | Assign to this object the value read from the specified input `stream` using the specified `version` format, and return a reference to `stream`. If `stream` is initially invalid, this operation has no effect. If `version` is not supported, this object is unaltered and `stream` is invalidated, but otherwise unmodified. If `version` is supported but `stream` becomes invalid during this operation, this object has an undefined, but valid, state. Note that no version is read from `stream`. See the `bslx` package‐level documentation for more information on BDEX streaming of value‐semantic types and containers. | xref:BloombergLP/bdlt/Date/bdexStreamOut.adoc[`bdexStreamOut`] | Write the value of this object, using the specified `version` format, to the specified output `stream`, and return a reference to `stream`. If `stream` is initially invalid, this operation has no effect. If `version` is not supported, `stream` is invalidated, but otherwise unmodified. Note that `version` is not written to `stream`. See the `bslx` package‐level documentation for more information on BDEX streaming of value‐semantic types and containers. | xref:BloombergLP/bdlt/Date/day.adoc[`day`] | Return the day of the month in the range `[1 .. 31]` of this date. | xref:BloombergLP/bdlt/Date/dayOfWeek.adoc[`dayOfWeek`] | Return the day of the week in the range `[DayOfWeek::e_SUN .. DayOfWeek::e_SAT]` of this date. | xref:BloombergLP/bdlt/Date/dayOfYear.adoc[`dayOfYear`] | Return the day of the year in the range `[1 .. 366]` of this date. | xref:BloombergLP/bdlt/Date/getYearDay.adoc[`getYearDay`] | Load, into the specified `year` and `dayOfYear`, the respective `year` and `dayOfYear` attribute values of this date. | xref:BloombergLP/bdlt/Date/getYearMonthDay.adoc[`getYearMonthDay`] | Load, into the specified `year`, `month`, and `day`, the respective `year`, `month`, and `day` attribute values of this date. | xref:BloombergLP/bdlt/Date/month.adoc[`month`] | Return the month of the year in the range `[1 .. 12]` of this date. | xref:BloombergLP/bdlt/Date/monthOfYear.adoc[`monthOfYear`] | Return the month of the year in the range `[MonthOfYear::e_JAN .. MonthOfYear::e_DEC]` of this date. | xref:BloombergLP/bdlt/PackedCalendar_DateRef/operator_bitand.adoc[`operator&`] | Return a proxy object to this object's referenced date. | xref:BloombergLP/bdlt/Date/operator_inc.adoc[`operator++`] | Set this object to have the value that is one day later than its current value, and return a reference providing modifiable access to this object. The behavior is undefined if the year/month/day representation of the current value is `9999/12/31`. | xref:BloombergLP/bdlt/Date/operator_plus_eq.adoc[`operator+=`] | Assign to this object the value that is later by the specified (signed) `numDays` from its current value, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting value falls within the range of dates supported by this class (see `isValidYearMonthDay`). Note that `numDays` may be negative. | xref:BloombergLP/bdlt/Date/operator_dec.adoc[`operator‐‐`] | Set this object to have the value that is one day earlier than its current value, and return a reference providing modifiable access to this object. The behavior is undefined if the year/month/day representation of the current value is `0001/01/01`. | xref:BloombergLP/bdlt/Date/operator_minus_eq.adoc[`operator‐=`] | Assign to this object the value that is earlier by the specified (signed) `numDays` from its current value, and return a reference providing modifiable access to this object. The behavior is undefined unless the resulting value falls within the range of dates supported by this class (see `isValidYearMonthDay`). Note that `numDays` may be negative. | xref:BloombergLP/bdlt/Date/print.adoc[`print`] | Write the value of this object to the specified output `stream` in a human‐readable format, and return a reference to `stream`. Optionally specify an initial indentation `level`, whose absolute value is incremented recursively for nested objects. 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. If `level` is negative, suppress indentation of the first line. If `spacesPerLevel` is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by `level`). If `stream` is not valid on entry, this operation has no effect. Note that this human‐readable format is not fully specified, and can change without notice. | xref:BloombergLP/bdlt/Date/setYearDay.adoc[`setYearDay`] | Set this object to have the value represented by the specified `year` and `dayOfYear`. The behavior is undefined unless `year` and `dayOfYear` represent a valid `Date` value (see `isValidYearDay`). | xref:BloombergLP/bdlt/Date/setYearDayIfValid.adoc[`setYearDayIfValid`] | Set this object to have the value represented by the specified `year` and `dayOfYear` if they comprise a valid `Date` value (see `isValidYearDay`). Return 0 on success, and a non‐zero value (with no effect) otherwise. | xref:BloombergLP/bdlt/Date/setYearMonthDay.adoc[`setYearMonthDay`] | Set this object to have the value represented by the specified `year`, `month`, and `day`. The behavior is undefined unless `year`, `month`, and `day` represent a valid `Date` value (see `isValidYearMonthDay`). | xref:BloombergLP/bdlt/Date/setYearMonthDayIfValid.adoc[`setYearMonthDayIfValid`] | Set this object to have the value represented by the specified `year`, `month`, and `day` if they comprise a valid `Date` value (see `isValidYearMonthDay`). Return 0 on success, and a non‐zero value (with no effect) otherwise. | xref:BloombergLP/bdlt/Date/streamOut.adoc[`streamOut`] | Write the value of this object to the specified output `stream` in a single‐line format, and return a reference to `stream`. If `stream` is not valid on entry, this operation has no effect. Note that this human‐readable format is not fully specified, can change without notice, and is logically equivalent to: ` print(stream, 0, ‐1); ` | xref:BloombergLP/bdlt/Date/validateAndSetYearDay.adoc[`validateAndSetYearDay`] | Set this object to have the value represented by the specified `year` and `dayOfYear` if they comprise a valid `Date` value (see `isValidYearDay`). Return 0 on success, and a non‐zero value (with no effect) otherwise. | xref:BloombergLP/bdlt/Date/validateAndSetYearMonthDay.adoc[`validateAndSetYearMonthDay`] | Set this object to have the value represented by the specified `year`, `month`, and `day` if they comprise a valid `Date` value (see `isValidYearMonthDay`). Return 0 on success, and a non‐zero value (with no effect) otherwise. | xref:BloombergLP/bdlt/Date/year.adoc[`year`] | Return the year in the range `[1 .. 9999]` of this date. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlt/Date/isValid-09.adoc[`isValid`] | `isValid` overloads | xref:BloombergLP/bdlt/Date/isValidYearDay.adoc[`isValidYearDay`] | Return `true` if the specified `year` and `dayOfYear` represent a valid value for a `Date` object, and `false` otherwise. `year` and `dayOfYear` represent a valid `Date` value if they correspond to a valid date as defined by the Unix (POSIX) calendar confined to the year range `[1 .. 9999]` inclusive. See {Valid Date Values and Their Representations} for details. | xref:BloombergLP/bdlt/Date/isValidYearMonthDay.adoc[`isValidYearMonthDay`] | Return `true` if the specified `year`, `month`, and `day` represent a valid value for a `Date` object, and `false` otherwise. `year`, `month`, and `day` represent a valid `Date` value if they correspond to a valid date as defined by the Unix (POSIX) calendar confined to the year range `[1 .. 9999]` inclusive. See {Valid Date Values and Their Representations} for details. | xref:BloombergLP/bdlt/Date/maxSupportedBdexVersion-06.adoc[`maxSupportedBdexVersion`] | `maxSupportedBdexVersion` overloads | xref:BloombergLP/bdlt/Date/maxSupportedVersion.adoc[`maxSupportedVersion`] | Return the most current BDEX streaming version number supported by this class. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlt/operator_not_eq-0cd.adoc[`operator!=`] | Return `true` if the specified `lhs` and `rhs` objects do not have the same value, and `false` otherwise. Two `Date` objects do not have the same value if any of their `year`, `month`, and `day` attributes (respectively) do not have the same value. | xref:BloombergLP/bdlt/operator_plus-04.adoc[`operator+`] | Return the date value that is later by the specified (signed) `numDays` from the specified `date`. The behavior is undefined unless the resulting value falls within the range of dates supported by this class (see `isValidYearMonthDay`). Note that `numDays` may be negative. | xref:BloombergLP/bdlt/operator_inc-0f.adoc[`operator++`] | Set the specified `date` object to have the value that is one day later than its current value, and return the value of `date` on entry. The behavior is undefined if the value of `date` on entry is `9999/12/31`. | xref:BloombergLP/bdlt/operator_minus-00f.adoc[`operator‐`] | Return the (signed) number of days between the specified `lhs` and `rhs` dates. Note that if `lhs < rhs` the result will be negative. | xref:BloombergLP/bdlt/operator_minus-09c.adoc[`operator‐`] | Return the date value that is earlier by the specified (signed) `numDays` from the specified `date`. The behavior is undefined unless the resulting value falls within the range of dates supported by this class (see `isValidYearMonthDay`). Note that `numDays` may be negative. | xref:BloombergLP/bdlt/operator_dec-01.adoc[`operator‐‐`] | Set the specified `date` object to have the value that is one day earlier than its current value, and return the value of `date` on entry. The behavior is undefined if the value of `date` on entry is `0001/01/01`. | xref:BloombergLP/bdlt/operator_lt-01.adoc[`operator<`] | Return `true` if the specified `lhs` date is earlier than the specified `rhs` date, and `false` otherwise. | xref:BloombergLP/bdlt/operator_le-04.adoc[`operator<=`] | Return `true` if the specified `lhs` date is earlier than or the same as the specified `rhs` date, and `false` otherwise. | xref:BloombergLP/bdlt/operator_eq-057.adoc[`operator==`] | Return `true` if the specified `lhs` and `rhs` objects have the same value, and `false` otherwise. Two `Date` objects have the same value if each of their `year`, `month`, and `day` attributes (respectively) have the same value. | xref:BloombergLP/bdlt/operator_gt-0c.adoc[`operator>`] | Return `true` if the specified `lhs` date is later than the specified `rhs` date, and `false` otherwise. | xref:BloombergLP/bdlt/operator_ge-079.adoc[`operator>=`] | Return `true` if the specified `lhs` date is later than or the same as the specified `rhs` date, and `false` otherwise. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#