X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=util.cc;h=76efe0f35e7226b65e516c58daacf1dce4f9eca9;hb=262f66f165516f2ae3923b708d860a8711fc7c58;hp=a7479fcf3a754428edf39f56f7eebd34838aa0b7;hpb=64bff41cb3ccdd60e767a5bb9ed8525d2dda1966;p=cumulus.git diff --git a/util.cc b/util.cc index a7479fc..76efe0f 100644 --- a/util.cc +++ b/util.cc @@ -31,6 +31,8 @@ #include #include +#include "util.h" + using std::map; using std::ostream; using std::string; @@ -134,3 +136,24 @@ void fatal(string msg) fprintf(stderr, "FATAL: %s\n", msg.c_str()); exit(1); } + +/* Available time formats. */ +const char TimeFormat::FORMAT_FILENAME[] = "%Y%m%dT%H%M%S"; +const char TimeFormat::FORMAT_ISO8601[] = "%Y-%m-%d %H:%M:%S"; +const char TimeFormat::FORMAT_LOCALTIME[] = "%Y-%m-%d %H:%M:%S %z"; + +static size_t MAX_TIMESTAMP_LENGTH = 1024; + +std::string TimeFormat::format(time_t timestamp, const char *format, bool utc) +{ + struct tm time_buf; + + if (utc) + gmtime_r(×tamp, &time_buf); + else + localtime_r(×tamp, &time_buf); + + char buffer[MAX_TIMESTAMP_LENGTH]; + strftime(buffer, MAX_TIMESTAMP_LENGTH, format, &time_buf); + return string(buffer); +}