更新时区信息

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,
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"}

View File

@@ -1,7 +1,10 @@
from typing import List, Any, Dict
from datetime import datetime, timedelta
from datetime import datetime, timedelta, timezone
from psycopg import AsyncConnection, sql
# 定义UTC+8时区
UTC_8 = timezone(timedelta(hours=8))
class RealtimeRepository:
@@ -287,11 +290,22 @@ class RealtimeRepository:
"""
# Convert result_start_time string to datetime if needed
if isinstance(result_start_time, str):
simulation_time = datetime.fromisoformat(
result_start_time.replace("Z", "+00:00")
)
# 如果是ISO格式字符串解析并转换为UTC+8
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:
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
node_data = []
@@ -353,9 +367,19 @@ class RealtimeRepository:
"""
# Convert query_time string to datetime
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:
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
start_time = target_time - timedelta(seconds=1)
@@ -394,9 +418,19 @@ class RealtimeRepository:
"""
# Convert query_time string to datetime
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:
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
start_time = target_time - timedelta(seconds=1)

View File

@@ -1,7 +1,10 @@
from typing import List, Any, Dict
from datetime import datetime, timedelta
from datetime import datetime, timedelta, timezone
from psycopg import AsyncConnection, sql
# 定义UTC+8时区
UTC_8 = timezone(timedelta(hours=8))
class SchemeRepository:
@@ -309,11 +312,20 @@ class SchemeRepository:
"""
# Convert result_start_time string to datetime if needed
if isinstance(result_start_time, str):
simulation_time = datetime.fromisoformat(
result_start_time.replace("Z", "+00:00")
)
# 如果是ISO格式字符串解析并转换为UTC+8
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:
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
node_data = []
@@ -379,9 +391,19 @@ class SchemeRepository:
"""
# Convert query_time string to datetime
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:
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
start_time = target_time - timedelta(seconds=1)
@@ -422,9 +444,19 @@ class SchemeRepository:
"""
# Convert query_time string to datetime
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:
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
start_time = target_time - timedelta(seconds=1)