8#ifndef INCLUDED_BDLT_PROLEPTICDATEIMPUTIL
9#define INCLUDED_BDLT_PROLEPTICDATEIMPUTIL
396#include <bdlscm_version.h>
423 struct YearMonthDay {
430 k_MAX_SERIAL_DATE = 3652059
434 static const int s_firstCachedYear;
435 static const int s_lastCachedYear;
436 static const int s_firstCachedSerialDate;
437 static const int s_lastCachedSerialDate;
438 static const int s_cachedSerialDate[][13];
439 static const YearMonthDay s_cachedYearMonthDay[];
440 static const char s_cachedDaysInMonth[][13];
531 static void serialToYd(
int *year,
int *dayOfYear,
int serialDay);
587 static void serialToYmd(
int *year,
int *month,
int *day,
int serialDay);
604 static int ydToDay(
int year,
int dayOfYear);
611 static void ydToMd(
int *month,
int *day,
int year,
int dayOfYear);
617 static int ydToMonth(
int year,
int dayOfYear);
663 return 0 == year % 4 && (0 != year % 100 || 0 == year % 400);
671 return static_cast<unsigned>(serialDay) - 1 < k_MAX_SERIAL_DATE;
677 if (s_firstCachedYear <= year && year <= s_lastCachedYear) {
680 if (month < 1 || month > 12 || day < 1) {
684 return day <= s_cachedDaysInMonth[year - s_firstCachedYear][month];
711 int year, month, day;
721 int year, month, day;
749 ydToMd(month, day, *year, dayOfYear);
758 ydToMd(&month, &day, year, dayOfYear);
768 ydToMd(&month, &day, year, dayOfYear);
781 return 1 + serialDay % 7;
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_REVIEW(X)
Definition bsls_review.h:1019
Definition bbldc_basicisma30360.h:112
Definition bdlt_prolepticdateimputil.h:419
static int numLeapYears(int year1, int year2)
static int serialToDayOfYear(int serialDay)
Definition bdlt_prolepticdateimputil.h:695
static int ydToDayOfWeek(int year, int dayOfYear)
Definition bdlt_prolepticdateimputil.h:785
static bool isValidSerial(int serialDay)
Definition bdlt_prolepticdateimputil.h:669
static int ymdToDayOfYear(int year, int month, int day)
static int ydToDay(int year, int dayOfYear)
Definition bdlt_prolepticdateimputil.h:753
static int serialToDayNoCache(int serialDay)
Definition bdlt_prolepticdateimputil.h:707
static int serialToYear(int serialDay)
static int lastDayOfMonth(int year, int month)
static void serialToYmdNoCache(int *year, int *month, int *day, int serialDay)
Definition bdlt_prolepticdateimputil.h:737
static int ydToMonth(int year, int dayOfYear)
Definition bdlt_prolepticdateimputil.h:763
static int serialToMonth(int serialDay)
static void serialToYd(int *year, int *dayOfYear, int serialDay)
static void serialToYmd(int *year, int *month, int *day, int serialDay)
static bool isValidYearMonthDay(int year, int month, int day)
Definition bdlt_prolepticdateimputil.h:675
static void ydToMd(int *month, int *day, int year, int dayOfYear)
static int ymdToSerialNoCache(int year, int month, int day)
static int ymdToSerial(int year, int month, int day)
static int serialToDay(int serialDay)
static bool isLeapYear(int year)
Definition bdlt_prolepticdateimputil.h:653
static int ydToSerial(int year, int dayOfYear)
static bool isValidYearMonthDayNoCache(int year, int month, int day)
static int serialToMonthNoCache(int serialDay)
Definition bdlt_prolepticdateimputil.h:717
static int serialToDayOfWeek(int serialDay)
Definition bdlt_prolepticdateimputil.h:775
static int serialToYearNoCache(int serialDay)
Definition bdlt_prolepticdateimputil.h:727
static int ymdToDayOfWeek(int year, int month, int day)
Definition bdlt_prolepticdateimputil.h:793
static bool isValidYearDay(int year, int dayOfYear)