mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-02 01:13:19 +00:00
54 lines
1.1 KiB
C++
54 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
|