summaryrefslogtreecommitdiff
path: root/src/localtime.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/localtime.c')
-rw-r--r--src/localtime.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/localtime.c b/src/localtime.c
index a92248ecb..c3564d1b0 100644
--- a/src/localtime.c
+++ b/src/localtime.c
@@ -57,7 +57,6 @@ void nolocks_localtime(struct tm *tmp, time_t t, time_t tz, int dst) {
const time_t secs_day = 3600*24;
t -= tz; /* Adjust for timezone. */
- t += 3600+dst; /* Adjust for daylight time. */
time_t days = t / secs_day; /* Days passed since epoch. */
time_t seconds = t % secs_day; /* Remaining seconds. */
@@ -97,3 +96,18 @@ void nolocks_localtime(struct tm *tmp, time_t t, time_t tz, int dst) {
tmp->tm_mday = days+1; /* Add 1 since our 'days' is zero-based. */
tmp->tm_year -= 1900; /* Surprisingly tm_year is year-1900. */
}
+
+#ifdef LOCALTIME_TEST_MAIN
+#include <stdio.h>
+
+int main(void) {
+ tzset();
+ time_t t = time(NULL);
+ struct tm tm;
+ char buf[1024];
+
+ nolocks_localtime(&tm,t,timezone,daylight);
+ strftime(buf,sizeof(buf),"%d %b %H:%M:%S",&tm);
+ printf("[timezone: %d, dl: %d] %s\n", (int)timezone, (int)daylight, buf);
+}
+#endif