fix: daylight
This commit is contained in:
parent
310f4c3d40
commit
dc6ee3e1a0
|
@ -740,6 +740,8 @@ char *tz_win[554][2] = {{"Asia/Shanghai", "China Standard Time"},
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static int isdst_now = 0;
|
||||||
|
|
||||||
void taosSetSystemTimezone(const char *inTimezoneStr, char *outTimezoneStr, int8_t *outDaylight,
|
void taosSetSystemTimezone(const char *inTimezoneStr, char *outTimezoneStr, int8_t *outDaylight,
|
||||||
enum TdTimezone *tsTimezone) {
|
enum TdTimezone *tsTimezone) {
|
||||||
if (inTimezoneStr == NULL || inTimezoneStr[0] == 0) return;
|
if (inTimezoneStr == NULL || inTimezoneStr[0] == 0) return;
|
||||||
|
@ -805,19 +807,19 @@ void taosSetSystemTimezone(const char *inTimezoneStr, char *outTimezoneStr, int8
|
||||||
tzset();
|
tzset();
|
||||||
int32_t tz = (int32_t)((-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR);
|
int32_t tz = (int32_t)((-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR);
|
||||||
*tsTimezone = tz;
|
*tsTimezone = tz;
|
||||||
tz += daylight;
|
tz += isdst_now;
|
||||||
|
|
||||||
sprintf(outTimezoneStr, "%s (%s, %s%02d00)", buf, tzname[daylight], tz >= 0 ? "+" : "-", abs(tz));
|
sprintf(outTimezoneStr, "%s (%s, %s%02d00)", buf, tzname[isdst_now], tz >= 0 ? "+" : "-", abs(tz));
|
||||||
*outDaylight = daylight;
|
*outDaylight = isdst_now;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
setenv("TZ", buf, 1);
|
setenv("TZ", buf, 1);
|
||||||
tzset();
|
tzset();
|
||||||
int32_t tz = (int32_t)((-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR);
|
int32_t tz = (int32_t)((-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR);
|
||||||
*tsTimezone = tz;
|
*tsTimezone = tz;
|
||||||
tz += daylight;
|
tz += isdst_now;
|
||||||
sprintf(outTimezoneStr, "%s (%s, %s%02d00)", buf, tzname[daylight], tz >= 0 ? "+" : "-", abs(tz));
|
sprintf(outTimezoneStr, "%s (%s, %s%02d00)", buf, tzname[isdst_now], tz >= 0 ? "+" : "-", abs(tz));
|
||||||
*outDaylight = daylight;
|
*outDaylight = isdst_now;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -895,6 +897,7 @@ void taosGetSystemTimezone(char *outTimezoneStr, enum TdTimezone *tsTimezone) {
|
||||||
struct tm tm1;
|
struct tm tm1;
|
||||||
taosLocalTime(&tx1, &tm1, NULL);
|
taosLocalTime(&tx1, &tm1, NULL);
|
||||||
daylight = tm1.tm_isdst;
|
daylight = tm1.tm_isdst;
|
||||||
|
isdst_now = tm1.tm_isdst;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* format example:
|
* format example:
|
||||||
|
@ -1009,6 +1012,7 @@ void taosGetSystemTimezone(char *outTimezoneStr, enum TdTimezone *tsTimezone) {
|
||||||
time_t tx1 = taosGetTimestampSec();
|
time_t tx1 = taosGetTimestampSec();
|
||||||
struct tm tm1;
|
struct tm tm1;
|
||||||
taosLocalTime(&tx1, &tm1, NULL);
|
taosLocalTime(&tx1, &tm1, NULL);
|
||||||
|
isdst_now = tm1.tm_isdst;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* format example:
|
* format example:
|
||||||
|
|
Loading…
Reference in New Issue