20#ifndef ORES_PLATFORM_TIME_TIME_POINT_PARSER_HPP
21#define ORES_PLATFORM_TIME_TIME_POINT_PARSER_HPP
26#include "ores.platform/time/datetime.hpp"
28namespace rfl::parsing {
30template <
class ReaderType,
class WriterType,
class ProcessorsType>
31struct Parser<ReaderType, WriterType,
32 std::chrono::system_clock::time_point, ProcessorsType> {
33 using InputVarType =
typename ReaderType::InputVarType;
34 using OutputVarType =
typename WriterType::OutputVarType;
36 static Result<std::chrono::system_clock::time_point>
read(
37 const ReaderType& _r,
const InputVarType& _var)
noexcept {
38 const auto str_result = Parser<ReaderType, WriterType,
39 std::string, ProcessorsType>::read(_r, _var);
41 return rfl::Unexpected(Error(str_result.error()->what()));
46 }
catch (
const std::exception& e) {
47 return rfl::Unexpected(Error(e.what()));
52 static void write(
const WriterType& _w,
53 const std::chrono::system_clock::time_point& _tp,
54 const P& _parent)
noexcept {
56 Parser<ReaderType, WriterType, std::string, ProcessorsType>::write(
@ read
Read and display session file contents.
static std::chrono::system_clock::time_point parse_time_point(const std::string &str, const std::string &format="%Y-%m-%d %H:%M:%S")
Parses a string into a time point.
Definition datetime.cpp:60
static std::string format_time_point(const std::chrono::system_clock::time_point &tp, const std::string &format="%Y-%m-%d %H:%M:%S")
Formats a time point as a string using local time.
Definition datetime.cpp:30