#include <boost/date_time/posix_time/posix_time.hpp> #include <leatherman/util/time.hpp> namespace leatherman { namespace util { std::string get_expiry_datetime(int expiry_minutes) { struct std::tm expiry_time_info; std::string expiry_time_buffer(80, '\0'); // Get current time and add the specified minutes std::time_t expiry_time { time(nullptr) }; expiry_time += 60 * expiry_minutes; // Get local time structure get_local_time(&expiry_time, &expiry_time_info); // Return the formatted string if (strftime(&expiry_time_buffer[0], 80, "%FT%TZ", &expiry_time_info) == 0) { // invalid buffer return ""; } expiry_time_buffer.resize(strlen(&expiry_time_buffer[0])); return expiry_time_buffer; } std::string get_ISO8601_time(unsigned int modifier_in_seconds) { boost::posix_time::ptime t = boost::posix_time::microsec_clock::universal_time() + boost::posix_time::seconds(modifier_in_seconds); return boost::posix_time::to_iso_extended_string(t) + "Z"; } std::string get_date_time() { struct std::tm now_info; std::string now_buffer(80, '\0'); // Get current time std::time_t now { time(nullptr) }; // Get local time structure get_local_time(&now, &now_info); // Return the formatted string strftime(&now_buffer[0], 80, "%Y%m%d_%H%M%S", &now_info); now_buffer.resize(strlen(&now_buffer[0])); return now_buffer; } }} // namespace leatherman::util