diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-08-25 13:22:32 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-08-25 13:22:32 +0100 |
| commit | b3e7a9625f860e7d83c4077b24fe811eb9941456 (patch) | |
| tree | f2f12cfb9e98c99bcc5b3a6a5a852223dae7ed20 /src/metadata.cc | |
| parent | f976e8ac94dfc6130797c5d98a0399321dce43e7 (diff) | |
| parent | bbf265955518069c5c841be5fe02a95b60e9197b (diff) | |
Merge branch 'master' into interop
Diffstat (limited to 'src/metadata.cc')
| -rw-r--r-- | src/metadata.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/metadata.cc b/src/metadata.cc index 5304fd96..bcf5d76c 100644 --- a/src/metadata.cc +++ b/src/metadata.cc @@ -52,25 +52,30 @@ void XMLMetadata::set_issue_date_now () { char buffer[64]; - time_t now; - time (&now); + time_t now = time (0); struct tm* tm = localtime (&now); -#ifdef LIBDCP_POSIX - strftime (buffer, 64, "%Y-%m-%dT%I:%M:%S%z", tm); - issue_date = string (buffer); -#else - /* No %z for strftime on Windows: it will seemingly be interpreted as %Z and will - output some localised string describing the timezone */ strftime (buffer, 64, "%Y-%m-%dT%I:%M:%S", tm); + int offset = 0; + +#ifdef LIBDCP_POSIX + + offset = tm->tm_gmtoff / 60; + +#else TIME_ZONE_INFORMATION tz; GetTimeZoneInformation (&tz); - issue_date = string (buffer) + bias_to_string (tz.Bias); + offset = tz.Bias; #endif + + issue_date = string (buffer) + utc_offset_to_string (offset); } +/** @param b Offset from UTC to local time in minutes. + * @return string of the form e.g. -01:00. + */ string -XMLMetadata::bias_to_string (int b) +XMLMetadata::utc_offset_to_string (int b) { bool const negative = (b < 0); b = negative ? -b : b; @@ -85,6 +90,6 @@ XMLMetadata::bias_to_string (int b) o << "+"; } - o << setw(2) << setfill('0') << hours << setw(2) << setfill('0') << minutes; + o << setw(2) << setfill('0') << hours << ":" << setw(2) << setfill('0') << minutes; return o.str (); } |
