]> git.mxchange.org Git - simgear.git/commitdiff
#1207: Add helper to get Unix time in GMT
authorJames Turner <zakalawe@mac.com>
Wed, 1 Jan 2014 21:03:24 +0000 (21:03 +0000)
committerJames Turner <zakalawe@mac.com>
Wed, 1 Jan 2014 21:03:24 +0000 (21:03 +0000)
On Windows, time() is returning a value which if offset by the
selected time-zone. Provide a variant which is always in GMT.

simgear/timing/lowleveltime.cxx
simgear/timing/lowleveltime.h

index 9d20655d6361ab94904086533a42b0aecff3b465..36fd1d35f446a4321b15277b99074e784b044828 100644 (file)
@@ -1134,3 +1134,15 @@ char *tzstring (const char* string)
 
   return strncpy (p, string, needed);
 }
+
+time_t sgGMTime()
+{
+       struct tm now;
+       time_t now_sec = time(0);
+#if defined(SG_WINDOWS)
+       now = *gmtime(&now_sec);
+#else
+       gmtime_r(&now_sec, &now);
+#endif
+    return mktime(&now);
+}
\ No newline at end of file
index 74be3b8e474360e4fb65ae74bc2cd12f2dd8a595..1be49531ef2fd72da1091c054bb58184a8af981a 100644 (file)
@@ -41,6 +41,11 @@ void show (const char *zone, time_t t, int v);
 /* adapted from <time.h> */
 struct tm * fgLocaltime (const time_t *t, const char *tzName);
 
+/* version of time() which returns a value in GMT/UTC, without 
+ any timezone adjustment. Necessary on Windows where calling time()
+ returns a value in the local time-zone. */
+time_t sgGMTime();
+
 /* Prototype for the internal function to get information based on TZ.  */
 extern struct tm *fgtz_convert (const time_t *t, int use_localtime,
                                     struct tm *tp, const char *tzName);