/* * 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 */ #include "mirai-core/DateTime.h" #include #include #include #include #include namespace mirai { std::optional stringToDate(const std::string &dateStr) { using std::operator""sv; auto dateSplitView = dateStr | std::views::split("-"sv) | std::views::transform([](auto v) -> int { int i = 0; std::from_chars(v.data(), v.data() + v.size(), i); return i; }); std::vector dateSplit{dateSplitView.begin(), dateSplitView.end()}; if (dateSplit.size() != 3) { return std::nullopt; } auto year = dateSplit[0]; auto month = dateSplit[1]; auto day = dateSplit[2]; return mirai::Date(year, static_cast(month), static_cast(day)); } } // namespace mirai