46 lines
1 KiB
C
46 lines
1 KiB
C
|
#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;
|
||
|
}
|