Add more time api
This commit is contained in:
72
time_api.py
72
time_api.py
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import datetime, timedelta, timezone, date
|
||||
import time
|
||||
|
||||
'''
|
||||
@@ -14,7 +14,7 @@ import time
|
||||
|
||||
'''
|
||||
|
||||
def to_utc_time(query_time: str):
|
||||
def parse_utc_time(query_time: str) -> datetime.datetime:
|
||||
'''
|
||||
将一个北京时间的时间点,转换成utc
|
||||
'''
|
||||
@@ -22,29 +22,69 @@ def to_utc_time(query_time: str):
|
||||
utc_time = beijing_time.astimezone(timezone.utc)
|
||||
return utc_time
|
||||
|
||||
def to_utc_time_range(query_time: str, delta: float):
|
||||
def parse_beijing_time(query_time: str) -> datetime.datetime:
|
||||
'''
|
||||
将一个北京时间的时间点,转换成utc的 start/end 时间段
|
||||
将一个 utc 的时间点,转换成北京时间
|
||||
'''
|
||||
utc_time = datetime.fromisoformat(query_time)
|
||||
beijing_time = utc_time.astimezone(timezone(timedelta(hours=8)))
|
||||
return beijing_time
|
||||
|
||||
def to_utc_time(dt: datetime.datetime) -> datetime.datetime:
|
||||
'''
|
||||
将一个北京时间的时间点,转换成utc
|
||||
'''
|
||||
utc_time = dt.astimezone(timezone.utc)
|
||||
return utc_time
|
||||
|
||||
def to_beijing_time(dt: datetime.datetime) -> datetime.datetime:
|
||||
'''
|
||||
将一个 utc 的时间点,转换成北京时间
|
||||
'''
|
||||
beijing_time = dt.astimezone(timezone(timedelta(hours=8)))
|
||||
return beijing_time
|
||||
|
||||
def parse_date(query_time: str) -> datetime.date:
|
||||
'''
|
||||
将一个日期字符串,转换成日期
|
||||
日期字符串格式:YYYY-MM-DD
|
||||
'''
|
||||
return datetime.fromisoformat(query_time).date()
|
||||
|
||||
|
||||
def to_time_range(dt: datetime, delta: float) -> tuple[datetime.datetime, datetime.datetime]:
|
||||
'''
|
||||
将一个时间点,转换成 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)
|
||||
start_time = dt - timedelta(seconds=delta)
|
||||
end_time = dt + timedelta(seconds=delta)
|
||||
|
||||
return (utc_start_time, utc_end_time)
|
||||
return (start_time, end_time)
|
||||
|
||||
def get_utc_beginning(utc_time: datetime):
|
||||
def parse_date_range(query_time: str) -> tuple[datetime.datetime, datetime.datetime]:
|
||||
'''
|
||||
获取 utc 时间的当天零点
|
||||
将一个日期字符串,转换成 start/end 时间段
|
||||
日期字符串格式:YYYY-MM-DD
|
||||
'''
|
||||
return utc_time.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
start_time = datetime.fromisoformat(query_time).date()
|
||||
end_time = start_time + timedelta(days=1)
|
||||
return (start_time, end_time)
|
||||
|
||||
def get_utc_after(utc_time: datetime, hours: float=0.0, seconds: float=0.0):
|
||||
|
||||
def get_day_start(dt: datetime.date) -> datetime.datetime:
|
||||
'''
|
||||
获取 utc 时间后面的一个时间点
|
||||
获取 某一天的 00:00:00
|
||||
这一天可以是北京时间,也可以是 utc 时间
|
||||
'''
|
||||
return utc_time + timedelta(hours=hours, seconds=seconds)
|
||||
return dt.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
|
||||
def get_day_end(dt: datetime.date) -> datetime.datetime:
|
||||
'''
|
||||
获取 某一天的 23:59:59
|
||||
这一天可以是北京时间,也可以是 utc 时间
|
||||
'''
|
||||
return dt.replace(hour=23, minute=59, second=59, microsecond=0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user