diff --git a/source/os/src/osTimezone.c b/source/os/src/osTimezone.c index 864a60b706c2283628e36aefe6873a2aeeea5264..dd34d77b2347790bcd4516cd9cc7edfdc2e603af 100644 --- a/source/os/src/osTimezone.c +++ b/source/os/src/osTimezone.c @@ -48,16 +48,11 @@ void taosSetSystemTimezone(const char *inTimezone, char *outTimezone, int8_t *outDaylight) { if (inTimezone == NULL || inTimezone[0] == 0) return; -#ifdef WINDOWS +#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) char winStr[TD_LOCALE_LEN * 2]; sprintf(winStr, "TZ=%s", inTimezone); putenv(winStr); -#else - setenv("TZ", inTimezone, 1); -#endif tzset(); - - /* * get CURRENT time zone. * system current time zone is affected by daylight saving time(DST) * @@ -75,15 +70,34 @@ void taosSetSystemTimezone(const char *inTimezone, char *outTimezone, int8_t *ou int32_t tz = (int32_t)((-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR); tz += daylight; - /* * format: * (CST, +0800) * (BST, +0100) */ + sprintf(outTimezone, "(%s, %s%02d00)", tzname[daylight], tz >= 0 ? "+" : "-", abs(tz)); + *outDaylight = daylight; + +#elif defined(_TD_DARWIN_64) + + setenv("TZ", inTimezone, 1); + tzset(); + int32_t tz = (int32_t)((-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR); + tz += daylight; sprintf(outTimezone, "(%s, %s%02d00)", tzname[daylight], tz >= 0 ? "+" : "-", abs(tz)); *outDaylight = daylight; + +#else + setenv("TZ", inTimezone, 1); + tzset(); + int32_t tz = (int32_t)((-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR); + tz += daylight; + sprintf(outTimezone, "(%s, %s%02d00)", tzname[daylight], tz >= 0 ? "+" : "-", abs(tz)); + *outDaylight = daylight; + +#endif + } void taosGetSystemTimezone(char *outTimezone) {