1 #ifndef __LIBCPROJECT_DATE__
2 #define __LIBCPROJECT_DATE__
16 #define SECONDS_PER_MINUTE 60
17 #define SECONDS_PER_HOUR (60 * SECONDS_PER_MINUTE)
18 #define SECONDS_PER_DAY (24 * SECONDS_PER_HOUR)
19 #define MILLISECONDS_PER_SECOND 1000
void date_add_hours(struct date *date, int64_t hours)
Add hours to the date, managing the day, month, year changes if necessary.
uint64_t date_to_total_seconds(struct date *date)
Convert a date to total seconds.
uint64_t date_convert_hms_to_seconds(uint8_t hours, uint8_t minutes, uint8_t seconds)
Convert hours, minutes, and seconds to seconds.
uint64_t date_duration_seconds_between_2_dates(struct date *date1, struct date *date2)
Calculate the duration in seconds between 2 dates.
struct date * date_copy(struct date *date_to_copy)
Return the copy of a date.
uint64_t date_convert_milliseconds_to_seconds(uint16_t milliseconds)
Convert milliseconds to seconds.
bool date_get_is_valid(struct date *date)
Check if the date is valid (all fields are possible).
bool date_get_is_leap_year(uint16_t year)
Determine if a year is a leap year.
struct date * date_get_now_local()
Get the current date in local time.
string_t date_to_iso_string(struct date *date)
String representing the date in the date time string format, a simplified format based on ISO 8601,...
bool date_get_is_valid_year(uint16_t year)
Check if a year is valid, between [0, 9999] (inclusive).
bool date_get_is_valid_milliseconds(uint16_t milliseconds)
Check if milliseconds are valid, between [0, 999] (inclusive).
struct date * date_from_iso_string(string_t iso_string)
Create a date from an ISO 8601 string, with the format YYYY-MM-DDTHH:mm:ss.sssZ.
bool date_get_is_valid_month(uint8_t month)
Check if a month is valid, between [1, 12] (inclusive).
bool date_get_is_valid_hours(uint8_t hours)
Check if hours are valid, between [0, 23] (inclusive).
bool date_get_is_valid_seconds(uint8_t seconds)
Check if seconds are valid, between [0, 59] (inclusive).
uint64_t date_convert_days_to_seconds(uint64_t days)
Convert days to seconds.
uint64_t date_convert_seconds_to_milliseconds(uint64_t seconds)
Convert seconds to milliseconds.
bool date_get_is_valid_timezone_utc_offset(int8_t timezone_utc_offset)
Check if the timezone UTC offset is valid, between [-12, 14] (inclusive).
bool date_get_is_valid_minutes(uint8_t minutes)
Check if minutes are valid, between [0, 59] (inclusive).
void date_add_days(struct date *date, int64_t days)
Adds days to the date, managing month and year changes as needed.
bool date_get_is_valid_day(uint8_t day)
Check if a day is valid, between [1, 31] (inclusive).
uint16_t date_get_age(struct date *birth_date, struct date *current_date)
Calculates the age of a person based on their birth date.
void date_to_utc(struct date *date)
Transform the date with a Timezone UTC Offset to UTC (timezone_utc_offset = 0).
string_t date_to_iso_string_without_time(struct date *date)
String representing the date in the ISO 8601 format, without time information (YYYY-MM-DD).
uint8_t date_get_days_of_month(uint8_t month, uint16_t year)
Get number of days in one month [1, 12].
struct date * date_get_now_utc()
Get the current date in UTC.
int8_t timezone_utc_offset
Date object representing a single moment in time.