changeset 178:2bfe43b85d7f

Add dates
author David Demelier <markand@malikania.fr>
date Sat, 21 Sep 2013 15:08:53 +0200
parents f0cca031bcce
children 3648e9e6935b
files C++/Date.cpp C++/Date.h
diffstat 2 files changed, 114 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C++/Date.cpp	Sat Sep 21 15:08:53 2013 +0200
@@ -0,0 +1,59 @@
+/*
+ * Date.cpp -- date and time manipulation
+ *
+ * Copyright (c) 2011, 2012, 2013 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.
+ */
+
+#include "Date.h"
+
+Date::Date()
+{
+	m_timestamp = time(NULL);
+}
+
+Date::Date(time_t timestamp)
+{
+	m_timestamp = timestamp;
+}
+
+Date::~Date()
+{
+}
+
+time_t Date::getTimestamp() const
+{
+	return m_timestamp;
+}
+
+std::string Date::format(const std::string &format)
+{
+	char buffer[512];
+	struct tm *tm;
+
+	tm = localtime(&m_timestamp);
+	strftime(buffer, sizeof (buffer), format.c_str(), tm);
+
+	return std::string(buffer);
+}
+
+bool operator==(const Date &d1, const Date &d2)
+{
+	return d1.getTimestamp() == d2.getTimestamp();
+}
+
+bool operator<=(const Date &d1, const Date &d2)
+{
+	return d1.getTimestamp() <= d2.getTimestamp();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C++/Date.h	Sat Sep 21 15:08:53 2013 +0200
@@ -0,0 +1,55 @@
+/*
+ * Date.h -- date and time manipulation
+ *
+ * Copyright (c) 2011, 2012, 2013 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_H_
+#define _DATE_H_
+
+#include <cstdint>
+#include <ctime>
+#include <string>
+
+struct Date
+{
+	time_t m_timestamp;		//! time epoch
+
+	Date();
+	Date(time_t timestamp);
+	~Date();
+
+	/**
+	 * Get the timestamp.
+	 *
+	 * @return the timestamp
+	 */
+	time_t getTimestamp() const;
+
+	/**
+	 * 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);
+};
+
+bool operator==(const Date &, const Date &);
+
+bool operator<=(const Date &, const Date &);
+
+#endif // !_DATE_H_