ocarina/core/date.c

51 lines
1.0 KiB
C
Raw Normal View History

/*
* Copyright 2015 (c) Anna Schumaker.
*/
#include <core/date.h>
#include <core/string.h>
#include <time.h>
void date_today(struct date *date)
{
time_t rawtime = time(NULL);
struct tm *now = localtime(&rawtime);
if (date) {
date->d_year = now->tm_year + 1900;
date->d_month = now->tm_mon + 1;
date->d_day = now->tm_mday;
}
}
void date_read(struct file *f, struct date *date)
{
file_readf(f, "%u %u %u", &date->d_year, &date->d_month, &date->d_day);
}
void date_write(struct file *f, struct date *date)
{
file_writef(f, "%u %u %u", date->d_year, date->d_month, date->d_day);
}
gchar *date_string(const struct date *date)
{
struct tm tm = {
.tm_year = date->d_year - 1900,
.tm_mon = date->d_month - 1,
.tm_mday = date->d_day,
};
return string_tm2str(&tm);
}
int date_compare(const struct date *lhs, const struct date *rhs)
{
int ret = lhs->d_year - rhs->d_year;
if (ret != 0)
return ret;
ret = lhs->d_month - rhs->d_month;
if (ret != 0)
return ret;
return lhs->d_day - rhs->d_day;
}