fix(os): centos timezone error.
This commit is contained in:
parent
d608e6ec55
commit
c8fe82a2c8
|
@ -125,7 +125,7 @@ void taosGetSystemTimezone(char *outTimezoneStr, enum TdTimezone *tsTimezone) {
|
||||||
strcpy(outTimezoneStr, tz);
|
strcpy(outTimezoneStr, tz);
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(_TD_DARWIN_64)
|
#else
|
||||||
char buf[4096] = {0};
|
char buf[4096] = {0};
|
||||||
char *tz = NULL;
|
char *tz = NULL;
|
||||||
{
|
{
|
||||||
|
@ -170,64 +170,5 @@ void taosGetSystemTimezone(char *outTimezoneStr, enum TdTimezone *tsTimezone) {
|
||||||
*/
|
*/
|
||||||
snprintf(outTimezoneStr, TD_TIMEZONE_LEN, "%s (%s, %+03ld00)", tz, tm1.tm_isdst ? tzname[daylight] : tzname[0],
|
snprintf(outTimezoneStr, TD_TIMEZONE_LEN, "%s (%s, %+03ld00)", tz, tm1.tm_isdst ? tzname[daylight] : tzname[0],
|
||||||
-timezone / 3600);
|
-timezone / 3600);
|
||||||
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
* NOTE: do not remove it.
|
|
||||||
* Enforce set the correct daylight saving time(DST) flag according
|
|
||||||
* to current time
|
|
||||||
*/
|
|
||||||
time_t tx1 = taosGetTimestampSec();
|
|
||||||
struct tm tm1;
|
|
||||||
taosLocalTime(&tx1, &tm1);
|
|
||||||
|
|
||||||
/* load time zone string from /etc/timezone */
|
|
||||||
// FILE *f = fopen("/etc/timezone", "r");
|
|
||||||
errno = 0;
|
|
||||||
TdFilePtr pFile = taosOpenFile("/etc/timezone", TD_FILE_READ);
|
|
||||||
char buf[68] = {0};
|
|
||||||
if (pFile != NULL) {
|
|
||||||
int len = taosReadFile(pFile, buf, 64);
|
|
||||||
if (len < 64 && taosGetErrorFile(pFile)) {
|
|
||||||
taosCloseFile(&pFile);
|
|
||||||
printf("read /etc/timezone error, reason:%s", strerror(errno));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
taosCloseFile(&pFile);
|
|
||||||
|
|
||||||
buf[sizeof(buf) - 1] = 0;
|
|
||||||
char *lineEnd = strstr(buf, "\n");
|
|
||||||
if (lineEnd != NULL) {
|
|
||||||
*lineEnd = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// for CentOS system, /etc/timezone does not exist. Ignore the TZ environment variables
|
|
||||||
if (strlen(buf) > 0) {
|
|
||||||
setenv("TZ", buf, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// get and set default timezone
|
|
||||||
tzset();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* get CURRENT time zone.
|
|
||||||
* system current time zone is affected by daylight saving time(DST)
|
|
||||||
*
|
|
||||||
* e.g., the local time zone of London in DST is GMT+01:00,
|
|
||||||
* otherwise is GMT+00:00
|
|
||||||
*/
|
|
||||||
int32_t tz = (-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR;
|
|
||||||
*tsTimezone = tz;
|
|
||||||
tz += daylight;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* format example:
|
|
||||||
*
|
|
||||||
* Asia/Shanghai (CST, +0800)
|
|
||||||
* Europe/London (BST, +0100)
|
|
||||||
*/
|
|
||||||
snprintf(outTimezoneStr, TD_TIMEZONE_LEN, "%s (%s, %s%02d00)", buf, tzname[daylight], tz >= 0 ? "+" : "-", abs(tz));
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue