libcruft-util/parse/time.hpp

28 lines
874 B
C++

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright 2019 Danny Robson <danny@nerdcruft.net>
*/
#pragma once
#include "../expected.hpp"
#include "../view.hpp"
#include <chrono>
#include <system_error>
namespace cruft::parse {
/// Parse a number that represents a duration. eg, "1s", "5 minutes".
///
/// When there is no suffix it is assumed the quantity is in second.
///
/// Note: The quantities are as defined by the standard std::chrono
/// durations. This means that "1 month" will equal just under 30.5 days.
/// Thus the utility is not universally useful for offsetting.
expected<std::chrono::nanoseconds, std::errc>
duration (cruft::view<char const*> &);
}