libepoch/year.c

46 lines
1 KiB
C
Raw Normal View History

2024-02-05 11:23:45 -05:00
#include <stdint.h>
#include "epoch.h"
void yearNew(Year *year, int32_t inner) {
year->year = inner;
if (inner % 4 == 0 && (inner % 100 != 0 || inner % 400 == 0))
year->tag = leapYear;
else
year->tag = normalYear;
}
uint16_t yearGetDays(Year *year) {
switch (year->tag) {
case normalYear:
return 365;
case leapYear:
return 366;
default:
return 365;
}
}
int64_t yearGetSeconds(Year *year) {
return (int64_t)yearGetDays(year) * SECONDS_PER_DAY;
}
int32_t yearGetInner(Year *year) {
return year->year;
}
void yearIncrement(Year *year) {
year->year += 1;
if (year->year % 4 == 0 && (year->year % 100 != 0 || year->year % 400 == 0))
year->tag = leapYear;
else
year->tag = normalYear;
}
void yearDecrement(Year *year) {
year->year -= 1;
if (year->year % 4 == 0 && (year->year % 100 != 0 || year->year % 400 == 0))
year->tag = leapYear;
else
year->tag = normalYear;
}