@@ -742,6 +742,20 @@ char *tz_win[554][2] = {{"Asia/Shanghai", "China Standard Time"},
742
742
743
743
static int isdst_now = 0 ;
744
744
745
+ void parseTimeStr (char * p , char to [5 ]) {
746
+ for (int i = 0 ; i < 5 ; ++ i ) {
747
+ if (strlen (p ) > i ) {
748
+ to [i ] = p [i ];
749
+ } else {
750
+ to [i ] = '0' ;
751
+ }
752
+ }
753
+ if (strlen (p ) == 2 ) {
754
+ to [1 ] = '0' ;
755
+ to [2 ] = p [1 ];
756
+ }
757
+ }
758
+
745
759
int32_t taosSetSystemTimezone (const char * inTimezoneStr , char * outTimezoneStr , int8_t * outDaylight ,
746
760
enum TdTimezone * tsTimezone ) {
747
761
if (inTimezoneStr == NULL || inTimezoneStr [0 ] == 0 ) {
@@ -798,15 +812,19 @@ int32_t taosSetSystemTimezone(const char *inTimezoneStr, char *outTimezoneStr, i
798
812
memcpy (& winStr [3 ], pp , ppp - pp );
799
813
indexStr = ppp - pp + 3 ;
800
814
}
801
- sprintf (& winStr [indexStr ], "%c%c%c:%c%c:00" , (p [0 ] == '+' ? '+' : '-' ), p [1 ], p [2 ], p [3 ], p [4 ]);
815
+ char to [5 ];
816
+ parseTimeStr (p , to );
817
+ sprintf (& winStr [indexStr ], "%c%c%c:%c%c:00" , (to [0 ] == '+' ? '+' : '-' ), to [1 ], to [2 ], to [3 ], to [4 ]);
802
818
* tsTimezone = - taosStr2Int32 (p , NULL , 10 );
803
819
} else {
804
820
* tsTimezone = 0 ;
805
821
}
806
822
}
807
823
_putenv (winStr );
808
824
_tzset ();
809
- strcpy (outTimezoneStr , inTimezoneStr );
825
+ if (outTimezoneStr != inTimezoneStr ) {
826
+ strcpy (outTimezoneStr , inTimezoneStr );
827
+ }
810
828
* outDaylight = 0 ;
811
829
812
830
#elif defined(_TD_DARWIN_64 )
0 commit comments