diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h
index 68a71cf..79b72e4 100644
--- a/Core/Inc/yunhorn_sts_prd_conf.h
+++ b/Core/Inc/yunhorn_sts_prd_conf.h
@@ -362,6 +362,8 @@
 #endif
 
 #define	STS_BURN_IN_RFAC	((uint32_t) 2)
+ /* GMT+0800 China Standard Time */
+#define TIME_ZONE_SHIFT			8U
 
 
 /* STM32WL55JC READ/WRITE FLASH ADDRESS AND SIZE
diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c
index fee0b0f..78b17d4 100644
--- a/LoRaWAN/App/lora_app.c
+++ b/LoRaWAN/App/lora_app.c
@@ -901,6 +901,13 @@ static void SendTxData(void)
     if( IsClockSynched == false )
     {
         status = LmhpClockSyncAppTimeReq( );
+        struct tm localtime;
+        SysTime_t UnixEpoch = SysTimeGet();
+        UnixEpoch.Seconds -= 18; /*removing leap seconds*/
+        UnixEpoch.Seconds += 3600 * TIME_ZONE_SHIFT; /*adding time-zone-shift hours*/
+        SysTimeSet(UnixEpoch);
+        SysTimeLocalTime(UnixEpoch.Seconds,  &localtime);
+
     }
 
 	if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET))
@@ -1740,42 +1747,22 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
 					outbuf[i++] = (uint8_t) MinorVer;
 					outbuf[i++] = (uint8_t) SubMinorVer;
 
-					 struct tm localtime;
-					 SysTime_t UnixEpoch = SysTimeGet();
-					 UnixEpoch.Seconds -= 18; /*removing leap seconds*/
-
-					 UnixEpoch.Seconds += 3600 * 2; /*adding 2 hours*/
-
-					 SysTimeLocalTime(UnixEpoch.Seconds,  & localtime);
-
-					  APP_LOG(TS_OFF, VLEVEL_M, "LTIME:%02dh%02dm%02ds on %02d/%02d/%04d\r\n",
+					struct tm localtime;
+			        SysTime_t UnixEpoch = SysTimeGet();
+			        UnixEpoch.Seconds -= 18; /*removing leap seconds*/
+//			        UnixEpoch.Seconds += 3600 * TIME_ZONE_SHIFT; /*adding time-zone-shift hours*/
+//			        SysTimeSet(UnixEpoch);
+			        SysTimeLocalTime(UnixEpoch.Seconds,  &localtime);
+					APP_LOG(TS_OFF, VLEVEL_M, "LTIME:%02dh%02dm%02ds on %02d/%02d/%04d\r\n",
 					            localtime.tm_hour, localtime.tm_min, localtime.tm_sec,
 					            localtime.tm_mday, localtime.tm_mon + 1, localtime.tm_year + 1900);
-#if 0
-					LmhPackage_t LmhpClockSyncPackageFactory;
-					LmhpClockSyncPackageFactory.Init;
+					outbuf[i++] = (uint8_t) localtime.tm_hour;
+					outbuf[i++] = (uint8_t) localtime.tm_min;
+					outbuf[i++] = (uint8_t) localtime.tm_sec;
+					outbuf[i++] = (uint8_t) localtime.tm_mday;
+					outbuf[i++] = (uint8_t) localtime.tm_mon+1;
+					outbuf[i++] = (uint8_t) (localtime.tm_year+1900-2000);
 
-					if (LmhpClockSyncPackageFactory.IsInitialized)
-						LmhpClockSyncPackageFactory.Process;
-
-					if (LORAMAC_HANDLER_SUCCESS == LmhpClockSyncAppTimeReq()) {
-						APP_LOG(TS_OFF, VLEVEL_M, "\r\n Clock Sync Success \r\n");
-					}
-					SysTime_t	mytime=SysTimeGet();
-					struct tm mylocal;
-					SysTimeLocalTime((uint32_t)mytime.Seconds, &mylocal);
-
-					APP_LOG(TS_OFF, VLEVEL_M, "\r\nTime YYYYMMDD=%4d:%2d:%2d HHMMSS=%2d:%2d:%2d \r\n",
-							mylocal.tm_year, mylocal.tm_mon, mylocal.tm_mday, mylocal.tm_hour, mylocal.tm_min, mylocal.tm_sec);
-
-					outbuf[i++] = (uint8_t) mylocal.tm_year>>8&0xff;
-					outbuf[i++] = (uint8_t) mylocal.tm_year&0xff;
-					outbuf[i++] = (uint8_t) mylocal.tm_mon;
-					outbuf[i++] = (uint8_t) mylocal.tm_mday;
-					outbuf[i++] = (uint8_t) mylocal.tm_hour;
-					outbuf[i++] = (uint8_t) mylocal.tm_min;
-					outbuf[i++] = (uint8_t) mylocal.tm_sec;
-#endif
 					STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
 					APP_LOG(TS_OFF, VLEVEL_M, "###### YUNHORN Report Version [ %10x ] \r\n", (uint8_t *)outbuf);
 				}