8#ifndef INCLUDED_BDLT_DATE
9#define INCLUDED_BDLT_DATE
260#include <bdlscm_version.h>
276#include <bsl_iosfwd.h>
309 template <
class HASHALG>
323 static bool isValidSerial(
int serialDate);
325#ifndef BDE_OPENSOURCE_PUBLICATION
326 #ifdef BDE_USE_PROLEPTIC_DATES
327 #error 'BDE_USE_PROLEPTIC_DATES' option disallowed for Bloomberg code.
331#ifdef BDE_USE_PROLEPTIC_DATES
342 static int convertProlepticDateToPosix(
int serialDate);
353 static int convertPosixDateToProleptic(
int serialDate);
362 explicit Date(
int serialDate);
509 template <
class STREAM>
553 template <
class STREAM>
570 bsl::ostream&
print(bsl::ostream& stream,
572 int spacesPerLevel = 4)
const;
574#ifndef BDE_OPENSOURCE_PUBLICATION
605#ifndef BDE_OMIT_INTERNAL_DEPRECATED
624 bsl::ostream&
streamOut(bsl::ostream& stream)
const;
726template <
class HASHALG>
739bool Date::isValidSerial(
int serialDate)
745#ifdef BDE_USE_PROLEPTIC_DATES
747int Date::convertProlepticDateToPosix(
int serialDate)
749 if (1 != serialDate) {
758int Date::convertPosixDateToProleptic(
int serialDate)
760 if (serialDate > 3) {
764 else if (serialDate > 0) {
774: d_serialDate(serialDate)
781bool Date::isValidYearDay(
int year,
int dayOfYear)
783 return SerialDateImpUtil::isValidYearDay(year, dayOfYear);
787bool Date::isValidYearMonthDay(
int year,
int month,
int day)
789 return SerialDateImpUtil::isValidYearMonthDay(year, month, day);
795int Date::maxSupportedBdexVersion(
int )
823: d_serialDate(original.d_serialDate)
837 d_serialDate = rhs.d_serialDate;
844 BSLS_REVIEW(Date::isValidSerial(d_serialDate + numDays));
846 d_serialDate += numDays;
853 BSLS_REVIEW(Date::isValidSerial(d_serialDate - numDays));
855 d_serialDate -= numDays;
888 enum { k_SUCCESS = 0, k_FAILURE = -1 };
911 enum { k_SUCCESS = 0, k_FAILURE = -1 };
923template <
class STREAM>
929 int tmpSerialDate = 0;
931 stream.getInt24(tmpSerialDate);
933#ifdef BDE_USE_PROLEPTIC_DATES
934 tmpSerialDate = convertPosixDateToProleptic(tmpSerialDate);
937 if (stream && Date::isValidSerial(tmpSerialDate)) {
938 d_serialDate = tmpSerialDate;
1012template <
class STREAM>
1018#ifndef BDE_OPENSOURCE_PUBLICATION
1025#ifdef BDE_USE_PROLEPTIC_DATES
1026 stream.putInt24(convertProlepticDateToPosix(d_serialDate));
1028 stream.putInt24(d_serialDate);
1033 stream.invalidate();
1040#ifndef BDE_OPENSOURCE_PUBLICATION
1062#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1072 return print(stream, 0, -1);
1095 return lhs.d_serialDate == rhs.d_serialDate;
1101 return lhs.d_serialDate !=
rhs.d_serialDate;
1107 return date.print(stream, 0, -1);
1113 return lhs.d_serialDate <
rhs.d_serialDate;
1119 return lhs.d_serialDate <=
rhs.d_serialDate;
1125 return lhs.d_serialDate >
rhs.d_serialDate;
1131 return lhs.d_serialDate >=
rhs.d_serialDate;
1157 BSLS_REVIEW(Date::isValidSerial(date.d_serialDate + numDays));
1159 return Date(date.d_serialDate + numDays);
1165 BSLS_REVIEW(Date::isValidSerial(numDays + date.d_serialDate));
1167 return Date(numDays + date.d_serialDate);
1173 BSLS_REVIEW(Date::isValidSerial(date.d_serialDate - numDays));
1175 return Date(date.d_serialDate - numDays);
1181 return lhs.d_serialDate -
rhs.d_serialDate;
1185template <
class HASHALG>
1189 using ::BloombergLP::bslh::hashAppend;
Definition bdlt_date.h:294
void setYearDay(int year, int dayOfYear)
Definition bdlt_date.h:878
friend bool operator>=(const Date &, const Date &)
friend bool operator>(const Date &, const Date &)
void getYearMonthDay(int *year, int *month, int *day) const
Definition bdlt_date.h:983
friend Date operator-(const Date &, int)
bsl::ostream & streamOut(bsl::ostream &stream) const
Definition bdlt_date.h:1070
~Date()
Destroy this object.
Definition bdlt_date.h:828
static int maxSupportedBdexVersion()
Definition bdlt_date.h:1056
friend int operator-(const Date &, const Date &)
int dayOfYear() const
Return the day of the year in the range [1 .. 366] of this date.
Definition bdlt_date.h:968
static bool isValid(int year, int dayOfYear)
Definition bdlt_date.h:1044
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
static bool isValidYearDay(int year, int dayOfYear)
Definition bdlt_date.h:781
friend void hashAppend(HASHALG &hashAlg, const Date &)
int day() const
Return the day of the month in the range [1 .. 31] of this date.
Definition bdlt_date.h:955
int setYearMonthDayIfValid(int year, int month, int day)
Definition bdlt_date.h:909
void setYearMonthDay(int year, int month, int day)
Definition bdlt_date.h:899
int validateAndSetYearDay(int year, int dayOfYear)
Definition bdlt_date.h:1076
Date & operator--()
Definition bdlt_date.h:869
int addDaysIfValid(int numDays)
Date & operator++()
Definition bdlt_date.h:860
Date & operator=(const Date &rhs)
Definition bdlt_date.h:835
static int maxSupportedVersion()
Definition bdlt_date.h:1064
MonthOfYear::Enum monthOfYear() const
Definition bdlt_date.h:999
int year() const
Return the year in the range [1 .. 9999] of this date.
Definition bdlt_date.h:1005
static bool isValidYearMonthDay(int year, int month, int day)
Definition bdlt_date.h:787
friend bool operator!=(const Date &, const Date &)
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdlt_date.h:1013
int validateAndSetYearMonthDay(int year, int month, int day)
Definition bdlt_date.h:1082
friend Date operator+(const Date &, int)
Date & operator-=(int numDays)
Definition bdlt_date.h:851
Date()
Definition bdlt_date.h:802
int month() const
Return the month of the year in the range [1 .. 12] of this date.
Definition bdlt_date.h:993
int setYearDayIfValid(int year, int dayOfYear)
Definition bdlt_date.h:886
friend bool operator<(const Date &, const Date &)
friend bool operator==(const Date &, const Date &)
Date & operator+=(int numDays)
Definition bdlt_date.h:842
friend Date operator+(int, const Date &)
void getYearDay(int *year, int *dayOfYear) const
Definition bdlt_date.h:974
friend bool operator<=(const Date &, const Date &)
DayOfWeek::Enum dayOfWeek() const
Definition bdlt_date.h:961
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdlt_date.h:924
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_ASSERT_OPT(X)
Definition bsls_assert.h:2045
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_PRECONDITIONS_END()
Definition bsls_preconditions.h:131
#define BSLS_PRECONDITIONS_BEGIN()
Definition bsls_preconditions.h:130
#define BSLS_REVIEW(X)
Definition bsls_review.h:1019
void hashAppend(HASH_ALGORITHM &hashAlgorithm, const BigEndianInt16 &object)
Definition bbldc_basicisma30360.h:112
bool operator>(const Date &lhs, const Date &rhs)
bool operator<(const Date &lhs, const Date &rhs)
Calendar_BusinessDayConstIter operator++(Calendar_BusinessDayConstIter &iterator, int)
Definition bdlt_calendar.h:2215
bool operator==(const Calendar &lhs, const Calendar &rhs)
Date operator-(const Date &date, int numDays)
bool operator>=(const Date &lhs, const Date &rhs)
Date operator+(const Date &date, int numDays)
bsl::ostream & operator<<(bsl::ostream &stream, const Calendar &calendar)
bool operator<=(const Date &lhs, const Date &rhs)
void hashAppend(HASHALG &hashAlg, const Calendar &object)
bool operator!=(const Calendar &lhs, const Calendar &rhs)
Calendar_BusinessDayConstIter operator--(Calendar_BusinessDayConstIter &iterator, int)
Definition bdlt_calendar.h:2224
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
ALLOCATOR & lhs
Definition bslstl_string.h:3917
Definition bdlbb_blob.h:579
Enum
Enumerated day-of-week values.
Definition bdlt_dayofweek.h:125
Enum
Define the list of month-of-year values.
Definition bdlt_monthofyear.h:138
Definition bdlt_posixdateimputil.h:528
static bool isValidSerial(int serialDay)
Definition bdlt_posixdateimputil.h:800
static void serialToYmd(int *year, int *month, int *day, int serialDay)
static int serialToYear(int serialDay)
static int serialToMonth(int serialDay)
static int ymdToSerial(int year, int month, int day)
static int serialToDay(int serialDay)
static int ydToSerial(int year, int dayOfYear)
static int serialToDayOfWeek(int serialDay)
static void serialToYd(int *year, int *dayOfYear, int serialDay)
static int serialToDayOfYear(int serialDay)
Definition bdlt_posixdateimputil.h:808
Definition bslmf_isbitwisecopyable.h:298