Files
TJWaterServer/time_api.py
2025-02-24 20:46:42 +08:00

50 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from datetime import datetime, timedelta, timezone
import time
'''
2025-02-09T15:45:00+00:00 采用的是 ISO 8601 国际标准日期时间格式,具体特点如下:
日期部分YYYY-MM-DD年-月-日例如2025-02-09表示2025年2月9日。
时间部分HH:mm:ss时:分:秒例如15:45:00表示下午3点45分0秒。
分隔符日期与时间之间用字母T连接表明这是一个完整的时间点。
时区偏移:末尾的+00:00表示该时间基于协调世界时UTC即零时区。若使用Z替代+00:00如2025-02-09T15:45:00Z也符合ISO 8601标准两者等价
北京时间格式
2025-02-09T15:45:00+08:00
'''
def to_utc_time(query_time: str):
'''
将一个北京时间的时间点转换成utc
'''
beijing_time = datetime.fromisoformat(query_time)
utc_time = beijing_time.astimezone(timezone.utc)
return utc_time
def to_utc_time_range(query_time: str, delta: float):
'''
将一个北京时间的时间点转换成utc的 start/end 时间段
有些查询按照一个时间点查不到,用时间段保证能成功
delta 单位是秒
'''
beijing_time = datetime.fromisoformat(query_time)
utc_time = beijing_time.astimezone(timezone.utc)
utc_start_time = utc_time - timedelta(seconds=delta)
utc_end_time = utc_time + timedelta(seconds=delta)
return (utc_start_time, utc_end_time)
def get_utc_beginning(utc_time: datetime):
'''
获取 utc 时间的当天零点
'''
return utc_time.replace(hour=0, minute=0, second=0, microsecond=0)
def get_utc_after(utc_time: datetime, hours: float, seconds: float):
'''
获取 utc 时间后面的一个时间点
'''
return utc_time + timedelta(hours=hours, seconds=delta)