更新时区信息

This commit is contained in:
JIANG
2025-12-05 11:10:55 +08:00
parent 03e2fb9fd8
commit 0dc057dad7
3 changed files with 81 additions and 13 deletions

View File

@@ -281,5 +281,7 @@ async def delete_scada_data(
end_time: datetime, end_time: datetime,
conn: AsyncConnection = Depends(get_database_connection), conn: AsyncConnection = Depends(get_database_connection),
): ):
await ScadaRepository.delete_scada_by_id_time(conn, device_id, start_time, end_time) await ScadaRepository.delete_scada_by_id_time_range(
conn, device_id, start_time, end_time
)
return {"message": "Deleted successfully"} return {"message": "Deleted successfully"}

View File

@@ -1,7 +1,10 @@
from typing import List, Any, Dict from typing import List, Any, Dict
from datetime import datetime, timedelta from datetime import datetime, timedelta, timezone
from psycopg import AsyncConnection, sql from psycopg import AsyncConnection, sql
# 定义UTC+8时区
UTC_8 = timezone(timedelta(hours=8))
class RealtimeRepository: class RealtimeRepository:
@@ -287,11 +290,22 @@ class RealtimeRepository:
""" """
# Convert result_start_time string to datetime if needed # Convert result_start_time string to datetime if needed
if isinstance(result_start_time, str): if isinstance(result_start_time, str):
simulation_time = datetime.fromisoformat( # 如果是ISO格式字符串解析并转换为UTC+8
if result_start_time.endswith("Z"):
# UTC时间转换为UTC+8
utc_time = datetime.fromisoformat(
result_start_time.replace("Z", "+00:00") result_start_time.replace("Z", "+00:00")
) )
simulation_time = utc_time.astimezone(UTC_8)
else:
# 假设已经是UTC+8时间
simulation_time = datetime.fromisoformat(result_start_time)
if simulation_time.tzinfo is None:
simulation_time = simulation_time.replace(tzinfo=UTC_8)
else: else:
simulation_time = result_start_time simulation_time = result_start_time
if simulation_time.tzinfo is None:
simulation_time = simulation_time.replace(tzinfo=UTC_8)
# Prepare node data for batch insert # Prepare node data for batch insert
node_data = [] node_data = []
@@ -353,9 +367,19 @@ class RealtimeRepository:
""" """
# Convert query_time string to datetime # Convert query_time string to datetime
if isinstance(query_time, str): if isinstance(query_time, str):
target_time = datetime.fromisoformat(query_time.replace("Z", "+00:00")) if query_time.endswith("Z"):
# UTC时间转换为UTC+8
utc_time = datetime.fromisoformat(query_time.replace("Z", "+00:00"))
target_time = utc_time.astimezone(UTC_8)
else:
# 假设已经是UTC+8时间
target_time = datetime.fromisoformat(query_time)
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
else: else:
target_time = query_time target_time = query_time
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
# Create time range: query_time ± 1 second # Create time range: query_time ± 1 second
start_time = target_time - timedelta(seconds=1) start_time = target_time - timedelta(seconds=1)
@@ -394,9 +418,19 @@ class RealtimeRepository:
""" """
# Convert query_time string to datetime # Convert query_time string to datetime
if isinstance(query_time, str): if isinstance(query_time, str):
target_time = datetime.fromisoformat(query_time.replace("Z", "+00:00")) if query_time.endswith("Z"):
# UTC时间转换为UTC+8
utc_time = datetime.fromisoformat(query_time.replace("Z", "+00:00"))
target_time = utc_time.astimezone(UTC_8)
else:
# 假设已经是UTC+8时间
target_time = datetime.fromisoformat(query_time)
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
else: else:
target_time = query_time target_time = query_time
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
# Create time range: query_time ± 1 second # Create time range: query_time ± 1 second
start_time = target_time - timedelta(seconds=1) start_time = target_time - timedelta(seconds=1)

View File

@@ -1,7 +1,10 @@
from typing import List, Any, Dict from typing import List, Any, Dict
from datetime import datetime, timedelta from datetime import datetime, timedelta, timezone
from psycopg import AsyncConnection, sql from psycopg import AsyncConnection, sql
# 定义UTC+8时区
UTC_8 = timezone(timedelta(hours=8))
class SchemeRepository: class SchemeRepository:
@@ -309,11 +312,20 @@ class SchemeRepository:
""" """
# Convert result_start_time string to datetime if needed # Convert result_start_time string to datetime if needed
if isinstance(result_start_time, str): if isinstance(result_start_time, str):
simulation_time = datetime.fromisoformat( # 如果是ISO格式字符串解析并转换为UTC+8
result_start_time.replace("Z", "+00:00") if result_start_time.endswith('Z'):
) # UTC时间转换为UTC+8
utc_time = datetime.fromisoformat(result_start_time.replace("Z", "+00:00"))
simulation_time = utc_time.astimezone(UTC_8)
else:
# 假设已经是UTC+8时间
simulation_time = datetime.fromisoformat(result_start_time)
if simulation_time.tzinfo is None:
simulation_time = simulation_time.replace(tzinfo=UTC_8)
else: else:
simulation_time = result_start_time simulation_time = result_start_time
if simulation_time.tzinfo is None:
simulation_time = simulation_time.replace(tzinfo=UTC_8)
# Prepare node data for batch insert # Prepare node data for batch insert
node_data = [] node_data = []
@@ -379,9 +391,19 @@ class SchemeRepository:
""" """
# Convert query_time string to datetime # Convert query_time string to datetime
if isinstance(query_time, str): if isinstance(query_time, str):
target_time = datetime.fromisoformat(query_time.replace("Z", "+00:00")) if query_time.endswith('Z'):
# UTC时间转换为UTC+8
utc_time = datetime.fromisoformat(query_time.replace("Z", "+00:00"))
target_time = utc_time.astimezone(UTC_8)
else:
# 假设已经是UTC+8时间
target_time = datetime.fromisoformat(query_time)
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
else: else:
target_time = query_time target_time = query_time
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
# Create time range: query_time ± 1 second # Create time range: query_time ± 1 second
start_time = target_time - timedelta(seconds=1) start_time = target_time - timedelta(seconds=1)
@@ -422,9 +444,19 @@ class SchemeRepository:
""" """
# Convert query_time string to datetime # Convert query_time string to datetime
if isinstance(query_time, str): if isinstance(query_time, str):
target_time = datetime.fromisoformat(query_time.replace("Z", "+00:00")) if query_time.endswith('Z'):
# UTC时间转换为UTC+8
utc_time = datetime.fromisoformat(query_time.replace("Z", "+00:00"))
target_time = utc_time.astimezone(UTC_8)
else:
# 假设已经是UTC+8时间
target_time = datetime.fromisoformat(query_time)
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
else: else:
target_time = query_time target_time = query_time
if target_time.tzinfo is None:
target_time = target_time.replace(tzinfo=UTC_8)
# Create time range: query_time ± 1 second # Create time range: query_time ± 1 second
start_time = target_time - timedelta(seconds=1) start_time = target_time - timedelta(seconds=1)