ORE Studio 0.0.4
Loading...
Searching...
No Matches
datetime.hpp
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 *
3 * Copyright (C) 2025 Marco Craveiro <marco.craveiro@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License as published by the Free Software
7 * Foundation; either version 3 of the License, or (at your option) any later
8 * version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License along with
16 * this program; if not, write to the Free Software Foundation, Inc., 51
17 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 *
19 */
20#ifndef ORES_PLATFORM_TIME_DATETIME_HPP
21#define ORES_PLATFORM_TIME_DATETIME_HPP
22
23#include <chrono>
24#include <string>
25
27
34inline constexpr const char* k_timestamp_format = "%Y-%m-%d %H:%M:%S";
35
43class datetime final {
44public:
54 static std::string to_iso8601_utc(
55 const std::chrono::system_clock::time_point& tp);
56
69 static std::chrono::system_clock::time_point from_iso8601_utc(
70 const std::string& str);
71
83 static std::string to_db_string(
84 const std::chrono::system_clock::time_point& tp);
85
96 static std::string to_local_display_string(
97 const std::chrono::system_clock::time_point& tp,
98 const std::string& format = k_timestamp_format);
99};
100
101}
102
103#endif
Time and datetime utilities.
Definition datetime.hpp:26
constexpr const char * k_timestamp_format
Canonical timestamp format string: "YYYY-MM-DD HH:MM:SS".
Definition datetime.hpp:34
Utilities for date and time operations.
Definition datetime.hpp:43
static std::chrono::system_clock::time_point from_iso8601_utc(const std::string &str)
Parses an ISO 8601 UTC string to a time point.
Definition datetime.cpp:45
static std::string to_iso8601_utc(const std::chrono::system_clock::time_point &tp)
Serialises a time point to ISO 8601 UTC string with 'Z' suffix.
Definition datetime.cpp:30
static std::string to_local_display_string(const std::chrono::system_clock::time_point &tp, const std::string &format=k_timestamp_format)
Formats a time point as a human-readable local-time string.
Definition datetime.cpp:86
static std::string to_db_string(const std::chrono::system_clock::time_point &tp)
Formats a time point as a UTC database timestamp string.
Definition datetime.cpp:79