libcproject
C static library easier to use than libc (C standard library).
|
#include <errno.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "convert.h"
#include "mathematics.h"
#include "string.h"
#include "types.h"
Go to the source code of this file.
Data Structures | |
struct | date |
Date object representing a single moment in time. More... | |
Macros | |
#define | SECONDS_PER_MINUTE 60 |
#define | SECONDS_PER_HOUR (60 * SECONDS_PER_MINUTE) |
#define | SECONDS_PER_DAY (24 * SECONDS_PER_HOUR) |
#define | MILLISECONDS_PER_SECOND 1000 |
Functions | |
struct date * | date_copy (struct date *date_to_copy) |
Return the copy of a date. More... | |
bool | date_get_is_valid_year (uint16_t year) |
Check if a year is valid, between [0, 9999] (inclusive). More... | |
bool | date_get_is_valid_month (uint8_t month) |
Check if a month is valid, between [1, 12] (inclusive). More... | |
bool | date_get_is_valid_day (uint8_t day) |
Check if a day is valid, between [1, 31] (inclusive). More... | |
bool | date_get_is_valid_hours (uint8_t hours) |
Check if hours are valid, between [0, 23] (inclusive). More... | |
bool | date_get_is_valid_minutes (uint8_t minutes) |
Check if minutes are valid, between [0, 59] (inclusive). More... | |
bool | date_get_is_valid_seconds (uint8_t seconds) |
Check if seconds are valid, between [0, 59] (inclusive). More... | |
bool | date_get_is_valid_milliseconds (uint16_t milliseconds) |
Check if milliseconds are valid, between [0, 999] (inclusive). More... | |
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). More... | |
bool | date_get_is_valid (struct date *date) |
Check if the date is valid (all fields are possible). More... | |
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, which is always 24 characters long (YYYY-MM-DDTHH:mm:ss.sssZ ). The timezone is always UTC, as denoted by the suffix Z . More... | |
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 ). More... | |
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 . More... | |
uint8_t | date_get_days_of_month (uint8_t month, uint16_t year) |
Get number of days in one month [1, 12]. More... | |
bool | date_get_is_leap_year (uint16_t year) |
Determine if a year is a leap year. More... | |
uint64_t | date_convert_milliseconds_to_seconds (uint16_t milliseconds) |
Convert milliseconds to seconds. More... | |
uint64_t | date_convert_seconds_to_milliseconds (uint64_t seconds) |
Convert seconds to milliseconds. More... | |
uint64_t | date_convert_days_to_seconds (uint64_t days) |
Convert days to seconds. More... | |
uint64_t | date_convert_hms_to_seconds (uint8_t hours, uint8_t minutes, uint8_t seconds) |
Convert hours, minutes, and seconds to seconds. More... | |
uint64_t | date_to_total_seconds (struct date *date) |
Convert a date to total seconds. More... | |
uint64_t | date_duration_seconds_between_2_dates (struct date *date1, struct date *date2) |
Calculate the duration in seconds between 2 dates. More... | |
void | date_add_hours (struct date *date, int64_t hours) |
Add hours to the date, managing the day, month, year changes if necessary. More... | |
void | date_add_days (struct date *date, int64_t days) |
Adds days to the date, managing month and year changes as needed. More... | |
void | date_to_utc (struct date *date) |
Transform the date with a Timezone UTC Offset to UTC (timezone_utc_offset = 0). More... | |
struct date * | date_get_now_utc () |
Get the current date in UTC. More... | |
struct date * | date_get_now_local () |
Get the current date in local time. More... | |
uint16_t | date_get_age (struct date *birth_date, struct date *current_date) |
Calculates the age of a person based on their birth date. More... | |
struct date |
#define SECONDS_PER_HOUR (60 * SECONDS_PER_MINUTE) |
#define SECONDS_PER_DAY (24 * SECONDS_PER_HOUR) |
Return the copy of a date.
date |
bool date_get_is_valid_year | ( | uint16_t | year | ) |
Check if a year is valid, between [0, 9999] (inclusive).
year |
bool date_get_is_valid_month | ( | uint8_t | month | ) |
Check if a month is valid, between [1, 12] (inclusive).
month |
bool date_get_is_valid_day | ( | uint8_t | day | ) |
Check if a day is valid, between [1, 31] (inclusive).
day |
bool date_get_is_valid_hours | ( | uint8_t | hours | ) |
Check if hours are valid, between [0, 23] (inclusive).
hours |
bool date_get_is_valid_minutes | ( | uint8_t | minutes | ) |
Check if minutes are valid, between [0, 59] (inclusive).
minutes |
bool date_get_is_valid_seconds | ( | uint8_t | seconds | ) |
Check if seconds are valid, between [0, 59] (inclusive).
seconds |
bool date_get_is_valid_milliseconds | ( | uint16_t | milliseconds | ) |
Check if milliseconds are valid, between [0, 999] (inclusive).
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).
timezone_utc_offset |
bool date_get_is_valid | ( | struct date * | date | ) |
Check if the date is valid (all fields are possible).
date |
String representing the date in the date time string format, a simplified format based on ISO 8601, which is always 24 characters long (YYYY-MM-DDTHH:mm:ss.sssZ
). The timezone is always UTC, as denoted by the suffix Z
.
date |
String representing the date in the ISO 8601 format, without time information (YYYY-MM-DD
).
date |
Create a date from an ISO 8601 string, with the format YYYY-MM-DDTHH:mm:ss.sssZ
.
The timezone is always UTC, as denoted by the suffix Z
.
iso_string |
uint8_t date_get_days_of_month | ( | uint8_t | month, |
uint16_t | year | ||
) |
Get number of days in one month [1, 12].
month |
bool date_get_is_leap_year | ( | uint16_t | year | ) |
Determine if a year is a leap year.
year |
uint64_t date_convert_milliseconds_to_seconds | ( | uint16_t | milliseconds | ) |
Convert milliseconds to seconds.
milliseconds |
uint64_t date_convert_seconds_to_milliseconds | ( | uint64_t | seconds | ) |
Convert seconds to milliseconds.
seconds |
uint64_t date_convert_days_to_seconds | ( | uint64_t | days | ) |
Convert days to seconds.
days |
uint64_t date_convert_hms_to_seconds | ( | uint8_t | hours, |
uint8_t | minutes, | ||
uint8_t | seconds | ||
) |
Convert hours, minutes, and seconds to seconds.
hours | |
minutes | |
seconds |
uint64_t date_to_total_seconds | ( | struct date * | date | ) |
Convert a date to total seconds.
date |
Calculate the duration in seconds between 2 dates.
date1 | |
date2 |
void date_add_hours | ( | struct date * | date, |
int64_t | hours | ||
) |
Add hours to the date, managing the day, month, year changes if necessary.
NOTE: Mutates the date.
date | |
hours |
void date_add_days | ( | struct date * | date, |
int64_t | days | ||
) |
Adds days to the date, managing month and year changes as needed.
NOTE: Mutates the date.
date | The date to which days are being added. |
days | The number of days to add. |
void date_to_utc | ( | struct date * | date | ) |
Transform the date with a Timezone UTC Offset to UTC (timezone_utc_offset = 0).
NOTE: Mutates the date.
date |
struct date* date_get_now_utc | ( | ) |
Get the current date in UTC.
struct date* date_get_now_local | ( | ) |
Get the current date in local time.