view modules/date/date.h @ 549:bc8a2831b6df

Ini: some style
author David Demelier <markand@malikania.fr>
date Wed, 15 Jun 2016 13:31:29 +0200
parents f48bb09bccc7
children
line wrap: on
line source

/*
 * date.h -- date and time manipulation
 *
 * Copyright (c) 2011-2015 David Demelier <markand@malikania.fr>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef DATE_HPP
#define DATE_HPP

/**
 * \file date.h
 * \brief Basic date management.
 */

#include <cstdint>
#include <ctime>
#include <string>

/**
 * \class Date
 * \brief Basic date class and format.
 */
class Date {
private:
    time_t m_timestamp;

public:
    /**
     * Default constructor to the current date.
     */
    Date();

    /**
     * Date with specific timestamp.
     *
     * \param timestamp the timestamp
     */
    Date(time_t timestamp);

    /**
     * Get the timestamp.
     *
     * \return the timestamp
     */
    inline time_t timestamp() const noexcept
    {
        return m_timestamp;
    }

    /**
     * Format the current that in the specified format,
     * see strftime(3) for patterns.
     *
     * \param format the format
     * \return the date formated
     */
    std::string format(const std::string &format);
};

/**
 * Check is two dates are identical.
 *
 * \param d1 the first date
 * \param d2 the second date
 * \return true if same
 */
bool operator==(const Date &d1, const Date &d2);

/**
 * Check is a date is less or equal the second date.
 *
 * \param d1 the first date
 * \param d2 the second date
 * \return true if d1 <= d2
 */
bool operator<=(const Date &d1, const Date &d2);

#endif // !DATE_HPP