mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-04 18:53:19 +00:00
55 lines
1.1 KiB
C
55 lines
1.1 KiB
C
|
/*
|
||
|
* Mirai. Copyright (C) 2024 Vyn
|
||
|
* This file is licensed under version 3 of the GNU General Public License (GPL-3.0-only)
|
||
|
* The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <bits/chrono.h>
|
||
|
#include <chrono>
|
||
|
#include <ctime>
|
||
|
#include <optional>
|
||
|
#include <string>
|
||
|
|
||
|
namespace mirai
|
||
|
{
|
||
|
|
||
|
struct Date {
|
||
|
explicit Date(int year, unsigned month, unsigned day);
|
||
|
|
||
|
explicit Date(std::chrono::time_point<std::chrono::system_clock> tp);
|
||
|
explicit Date(std::chrono::year_month_day chronoDate);
|
||
|
|
||
|
bool operator==(const Date &other) const;
|
||
|
bool operator<(const Date &other) const;
|
||
|
bool operator>(const Date &other) const;
|
||
|
|
||
|
std::chrono::year_month_day toStdChrono() const
|
||
|
{
|
||
|
return std::chrono::year_month_day{
|
||
|
std::chrono::year(year),
|
||
|
std::chrono::month(month),
|
||
|
std::chrono::day(day),
|
||
|
};
|
||
|
}
|
||
|
|
||
|
int year;
|
||
|
unsigned month;
|
||
|
unsigned day;
|
||
|
};
|
||
|
|
||
|
struct Time {
|
||
|
|
||
|
bool operator==(const Time &other) const;
|
||
|
bool operator<(const Time &other) const;
|
||
|
bool operator>(const Time &other) const;
|
||
|
|
||
|
int hour;
|
||
|
int minute;
|
||
|
};
|
||
|
|
||
|
std::optional<mirai::Date> stringToDate(const std::string &dateStr);
|
||
|
|
||
|
} // namespace mirai
|