summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-01-07 20:46:02 +0100
committerCarl Hetherington <cth@carlh.net>2025-01-09 20:56:26 +0100
commit32ac98a4b6f53f06cfe26687d338dfa5125ec20d (patch)
tree30ac889b9ee4112549ff801df5de00b8c5f254b4 /src/lib
parent2dc531378af4cc050a3c0a3d22aa8b2c30b11471 (diff)
Add rfc_2822_date().
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/util.cc19
-rw-r--r--src/lib/util.h1
2 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/util.cc b/src/lib/util.cc
index 14839d80d..5b0c25cda 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -78,8 +78,10 @@ LIBDCP_ENABLE_WARNINGS
#include <unicode/unistr.h>
#include <unicode/translit.h>
#include <unicode/brkiter.h>
+#include <fmt/chrono.h>
#include <fmt/format.h>
#include <boost/algorithm/string.hpp>
+#include <boost/date_time/c_local_time_adjustor.hpp>
#include <boost/range/algorithm/replace_if.hpp>
#include <boost/thread.hpp>
#include <boost/filesystem.hpp>
@@ -1207,3 +1209,20 @@ join_strings(vector<string> const& in, string const& separator)
});
}
+
+string
+rfc_2822_date(time_t time)
+{
+ auto const utc_now = boost::posix_time::second_clock::universal_time ();
+ auto const local_now = boost::date_time::c_local_adjustor<boost::posix_time::ptime>::utc_to_local (utc_now);
+ auto const offset = local_now - utc_now;
+
+ auto const hours = int(abs(offset.hours()));
+
+ auto tm = localtime(&time);
+
+ /* I tried using %z in the time formatter but it gave results like "Pacific Standard Time" instead +0800 on Windows */
+ return fmt::format("{:%a, %d %b %Y %H:%M:%S} {}{:02d}{:02d}", *tm, offset.hours() >= 0 ? "+" : "-", hours, int(offset.minutes()));
+}
+
+
diff --git a/src/lib/util.h b/src/lib/util.h
index eaa705f5e..e70d6f90f 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -102,6 +102,7 @@ extern void capture_ffmpeg_logs();
extern void setup_grok_library_path();
#endif
extern std::string join_strings(std::vector<std::string> const& in, std::string const& separator = " ");
+extern std::string rfc_2822_date(time_t time);
template <class T>