[#BloombergLP-bdlt-ProlepticDateImpUtil]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlt.adoc[bdlt]::ProlepticDateImpUtil
:relfileprefix: ../../
:mrdocs:

This `struct` provides a namespace for a suite of pure functions that perform low&hyphen;level operations on date values in a variety of formats&colon; year&sol;month&sol;day, year&sol;day&hyphen;of&hyphen;year, and serial date&period; Dates in the range `&lsqb;0001&sol;01&sol;01 &period;&period; 9999&sol;12&sol;31&rsqb;` that are valid per the proleptic Gregorian calendar are supported, with serial date 1 (3652059) corresponding to `0001&sol;01&sol;01` (`9999&sol;12&sol;31`)&period; Note that all of the functions, whether or not implemented in terms of a static cache, are stateless, and, as such, are inherently thread&hyphen;safe&period;

== Synopsis

Declared in `&lt;bdlt&lowbar;prolepticdateimputil&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
struct ProlepticDateImpUtil;
----

== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/isLeapYear.adoc[`isLeapYear`] 
| Return `true` if the specified `year` is a leap year, and `false` otherwise&period; The behavior is undefined unless `1 &lt;&equals; year &lt;&equals; 9999`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/isValidSerial.adoc[`isValidSerial`] 
| Return `true` if the specified `serialDay` represents a valid date value, and `false` otherwise&period; Note that valid date values are (as fully defined in the component&hyphen;level documentation) in the range `&lsqb;1 &period;&period; 3652059&rsqb;`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/isValidYearDay.adoc[`isValidYearDay`] 
| Return `true` if the specified `year` and `dayOfYear` represents a valid date value, and `false` otherwise&period; Note that valid date values are (as fully defined in the component&hyphen;level documentation) in the range `&lsqb;0001&sol;01 &period;&period; 9999&sol;366&rsqb;`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/isValidYearMonthDay.adoc[`isValidYearMonthDay`] 
| Return `true` if the specified `year`, `month`, and `day` represents a valid date value, and `false` otherwise&period; Note that valid date values are (as fully defined in the component&hyphen;level documentation) in the range `&lsqb;0001&sol;01&sol;01 &period;&period; 9999&sol;12&sol;31&rsqb;`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/isValidYearMonthDayNoCache.adoc[`isValidYearMonthDayNoCache`] 
| Return `true` if the specified `year`, `month`, and `day` represents a valid date value, and `false` otherwise&period; Note that valid date values are (as fully defined in the component&hyphen;level documentation) in the range `&lsqb;0001&sol;01&sol;01 &period;&period; 9999&sol;12&sol;31&rsqb;`&period; Also note that this function is guaranteed not to use any date&hyphen;cache optimizations&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/lastDayOfMonth.adoc[`lastDayOfMonth`] 
| Return the last day of the specified `month` in the specified `year`&period; The behavior is undefined unless `1 &lt;&equals; year &lt;&equals; 9999` and `1 &lt;&equals; month &lt;&equals; 12`&period; Note that the value returned will be in the range `&lsqb;28 &period;&period; 31&rsqb;`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/numLeapYears.adoc[`numLeapYears`] 
| Return the number of leap years occurring between the specified `year1` and `year2`, inclusive&period; The behavior is undefined unless `1 &lt;&equals; year1 &lt;&equals; 9999`, `1 &lt;&equals; year2 &lt;&equals; 9999`, and `year1 &lt;&equals; year2`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToDay.adoc[`serialToDay`] 
| Return the day (of the month) of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToDayNoCache.adoc[`serialToDayNoCache`] 
| Return the day (of the month) of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period; Note that this function is guaranteed not to use any date&hyphen;cache optimizations&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToDayOfWeek.adoc[`serialToDayOfWeek`] 
| Return, as an integer (with `1 &equals; SUN`, `2 &equals; MON`, &period;&period;&period;, `7 &equals; SAT`), the day (of the week) of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToDayOfYear.adoc[`serialToDayOfYear`] 
| Return the day of the year of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToMonth.adoc[`serialToMonth`] 
| Return the month of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToMonthNoCache.adoc[`serialToMonthNoCache`] 
| Return the month of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period; Note that this function is guaranteed not to use any date&hyphen;cache optimizations&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToYd.adoc[`serialToYd`] 
| Load, into the specified `year` and `dayOfYear`, the year&hyphen;day representation of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToYear.adoc[`serialToYear`] 
| Return the year of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToYearNoCache.adoc[`serialToYearNoCache`] 
| Return the year of the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period; Note that this function is guaranteed not to use any date&hyphen;cache optimizations&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToYmd.adoc[`serialToYmd`] 
| Load, into the specified `year`, `month`, and `day`, the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/serialToYmdNoCache.adoc[`serialToYmdNoCache`] 
| Load, into the specified `year`, `month`, and `day`, the date value indicated by the specified `serialDay`&period; The behavior is undefined unless `isValidSerial(serialDay)` returns `true`&period; Note that this function is guaranteed not to use any date&hyphen;cache&hyphen;optimizations&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ydToDay.adoc[`ydToDay`] 
| Return the day (of the month) of the date value indicated by the specified `year` and `dayOfYear`&period; The behavior is undefined unless `isValidYearDay(year, dayOfYear)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ydToDayOfWeek.adoc[`ydToDayOfWeek`] 
| Return, as an integer (with `1 &equals; SUN`, `2 &equals; MON`, &period;&period;&period;, `7 &equals; SAT`), the day (of the week) of the date value indicated by the specified `year` and `dayOfYear`&period; The behavior is undefined unless `isValidYearDay(year, dayOfYear)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ydToMd.adoc[`ydToMd`] 
| Load, into the specified `month` and `day`, the (partial) calendar date representation of the date value indicated by the specified `year` and `dayOfYear`&period; The behavior is undefined unless `isValidYearDay(year, dayOfYear)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ydToMonth.adoc[`ydToMonth`] 
| Return the month of the date value indicated by the specified `year` and `dayOfYear`&period; The behavior is undefined unless `isValidYearDay(year, dayOfYear)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ydToSerial.adoc[`ydToSerial`] 
| Return the serial date representation of the date value indicated by the specified `year` and `dayOfYear`&period; The behavior is undefined unless `isValidYearDay(year, dayOfYear)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ymdToDayOfWeek.adoc[`ymdToDayOfWeek`] 
| Return, as an integer (with `1 &equals; SUN`, `2 &equals; MON`, &period;&period;&period;, `7 &equals; SAT`), the day (of the week) of the date value indicated by the specified `year`, `month`, and `day`&period; The behavior is undefined unless `isValidYearMonthDay(year, month, day)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ymdToDayOfYear.adoc[`ymdToDayOfYear`] 
| Return the day of the year of the date value indicated by the specified `year`, `month`, and `day`&period; The behavior is undefined unless `isValidYearMonthDay(year, month, day)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ymdToSerial.adoc[`ymdToSerial`] 
| Return the serial date representation of the date value indicated by the specified `year`, `month`, and `day`&period; The behavior is undefined unless `isValidYearMonthDay(year, month, day)` returns `true`&period;
| xref:BloombergLP/bdlt/ProlepticDateImpUtil/ymdToSerialNoCache.adoc[`ymdToSerialNoCache`] 
| Return the serial date representation of the date value indicated by the specified `year`, `month`, and `day`&period; The behavior is undefined unless `isValidYearMonthDay(year, month, day)` returns `true`&period; Note that this function is guaranteed not to use any date&hyphen;cache optimizations&period;
|===



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