67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
#ifndef _TIME_LENGTH_H
|
|
#define _TIME_LENGTH_H
|
|
|
|
// Maximum number of leap second corrections
|
|
#ifndef TZ_MAX_LEAPS
|
|
# define TZ_MAX_LEAPS 50
|
|
#endif
|
|
|
|
#define SECSPERMIN 60
|
|
#define MINSPERHOUR 60
|
|
#define HOURSPERDAY 24
|
|
#define DAYSPERWEEK 7
|
|
#define DAYSPERNYEAR 365
|
|
#define DAYSPERLYEAR 366
|
|
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)
|
|
#define SECSPERDAY ((int_fast32_t) SECSPERHOUR * HOURSPERDAY)
|
|
#define MONSPERYEAR 12
|
|
|
|
#define TM_SUNDAY 0
|
|
#define TM_MONDAY 1
|
|
#define TM_TUESDAY 2
|
|
#define TM_WEDNESDAY 3
|
|
#define TM_THURSDAY 4
|
|
#define TM_FRIDAY 5
|
|
#define TM_SATURDAY 6
|
|
|
|
#define TM_JANUARY 0
|
|
#define TM_FEBRUARY 1
|
|
#define TM_MARCH 2
|
|
#define TM_APRIL 3
|
|
#define TM_MAY 4
|
|
#define TM_JUNE 5
|
|
#define TM_JULY 6
|
|
#define TM_AUGUST 7
|
|
#define TM_SEPTEMBER 8
|
|
#define TM_OCTOBER 9
|
|
#define TM_NOVEMBER 10
|
|
#define TM_DECEMBER 11
|
|
|
|
#define TM_YEAR_BASE 1900
|
|
|
|
#define EPOCH_YEAR 1970
|
|
#define EPOCH_WDAY TM_THURSDAY
|
|
|
|
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
|
|
|
|
// years before a Gregorian repeat
|
|
#ifndef YEARSPERREPEAT
|
|
# define YEARSPERREPEAT 400
|
|
#endif
|
|
|
|
// The Gregorian year averages 365.2425 days, which is 31556952 seconds.
|
|
#ifndef AVGSECSPERYEAR
|
|
# define AVGSECSPERYEAR 31556952L
|
|
#endif
|
|
#ifndef SECSPERREPEAT
|
|
# define SECSPERREPEAT ((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR)
|
|
#endif
|
|
#ifndef SECSPERREPEAT_BITS
|
|
# define SECSPERREPEAT_BITS 34 // ceil(log2(SECSPERREPEAT))
|
|
#endif
|
|
|
|
extern const int mon_lengths[2][MONSPERYEAR];
|
|
extern const int year_lengths[2];
|
|
|
|
#endif
|