Drizzled Public API Documentation

calendar.h File Reference

Go to the source code of this file.

Namespaces

 drizzled
 TODO: Rename this file - func.h is stupid.
 

Macros

#define JULIAN_DAY_NUMBER_AT_ABSOLUTE_DAY_ONE   INT64_C(1721425)
 
#define DAYS_IN_NORMAL_YEAR   INT32_C(365)
 
#define DAYS_IN_LEAP_YEAR   INT32_C(366)
 
#define UNIX_EPOCH_MIN_YEARS   1970
 
#define UNIX_EPOCH_MAX_YEARS   2038
 
#define CALENDAR_YY_PART_YEAR   70
 
#define GREGORIAN_DAYS_IN_400_YEARS   UINT32_C(146097)
 
#define GREGORIAN_DAYS_IN_100_YEARS   UINT32_C(36524)
 
#define GREGORIAN_DAYS_IN_4_YEARS   UINT32_C(1461)
 

Enumerations

enum  drizzled::calendar { GREGORIAN = 1, JULIAN = 2, HEBREW = 3, ISLAM = 4 }
 

Functions

int64_t drizzled::julian_day_number_from_gregorian_date (uint32_t year, uint32_t month, uint32_t day)
 
int64_t drizzled::absolute_day_number_to_julian_day_number (int64_t absolute_day)
 
int64_t drizzled::julian_day_number_to_absolute_day_number (int64_t julian_day)
 
void drizzled::gregorian_date_from_julian_day_number (int64_t julian_day, uint32_t *year_out, uint32_t *month_out, uint32_t *day_out)
 
void drizzled::gregorian_date_from_absolute_day_number (int64_t absolute_day, uint32_t *year_out, uint32_t *month_out, uint32_t *day_out)
 
uint32_t drizzled::days_in_year (uint32_t year, enum calendar calendar)
 
uint32_t drizzled::days_in_year_gregorian (const uint32_t year)
 
uint32_t drizzled::days_in_year_julian (const uint32_t year)
 
int32_t drizzled::number_of_leap_years_julian (uint32_t year)
 
int32_t drizzled::number_of_leap_years_gregorian (uint32_t year)
 
uint32_t drizzled::days_in_gregorian_year_month (uint32_t year, uint32_t month)
 
static bool drizzled::num_leap_years (uint32_t y, enum calendar c)
 
uint32_t drizzled::day_of_week (int64_t day_number, bool sunday_is_first_day_of_week)
 
bool drizzled::is_valid_gregorian_date (uint32_t year, uint32_t month, uint32_t day)
 
bool drizzled::in_unix_epoch_range (uint32_t year, uint32_t month, uint32_t day, uint32_t hour, uint32_t minute, uint32_t second)
 
uint32_t drizzled::week_number_from_gregorian_date (uint32_t year, uint32_t month, uint32_t day, bool sunday_is_first_day_of_week)
 
uint32_t drizzled::iso_week_number_from_gregorian_date (uint32_t year, uint32_t month, uint32_t day)
 
uint32_t drizzled::year_month_to_months (uint32_t year_month)
 
uint32_t drizzled::months_to_year_month (uint32_t months)
 
static bool drizzled::is_leap_year (uint32_t y, enum calendar c)
 
static bool drizzled::is_gregorian_leap_year (uint32_t y)
 
static bool drizzled::is_julian_leap_year (uint32_t y)
 

Detailed Description

Structures and functions for:

Calculating day number in Gregorian and Julian proleptic calendars. Converting between day numbers and dates in the calendars. Converting between different calendars. Calculating differences between dates.

Works used in research:

[Calendrical] Calculations", Dershowitz and Reingold [ISO] 8601 http://en.wikipedia.org/wiki/ISO_8601 [http://www.ddj.com/hpc-high-performance-computing/197006254] [http://en.wikipedia.org/wiki/Julian_day]#Calculation

Definition in file calendar.h.

Macro Definition Documentation

#define GREGORIAN_DAYS_IN_400_YEARS   UINT32_C(146097)

The following constants define the system of calculating the number of days in various periods of time in the Gregorian calendar.

Leap years (years containing 366 days) occur:

  • When the year is evenly divisible by 4
  • If the year is evenly divisible by 100, it must also be evenly divisible by 400.

Definition at line 61 of file calendar.h.