payment/payment_backend/utils/datetime.py

64 lines
1.7 KiB
Python
Raw Normal View History

import datetime
2024-11-13 09:23:59 +00:00
import re
def current():
return datetime.datetime.now()
2024-11-13 09:23:59 +00:00
def current_timestamp():
datetime.datetime.now().timestamp()
2024-11-13 09:23:59 +00:00
def is_time_difference_greater_than(timestamp1, timestamp2, hours=0, minutes=0, seconds=0):
"""
判断两个时间戳的时间差是否大于指定的小时分钟和秒数
参数:
timestamp1 (int): 第一个时间戳
timestamp2 (int): 第二个时间戳
hours (int): 要比较的小时数默认是0小时
minutes (int): 要比较的分钟数默认是0分钟
seconds (int): 要比较的秒数默认是0秒
返回:
bool: 如果时间差大于指定的小时分钟和秒数返回True否则返回False
"""
# 将时间戳转换为 datetime 对象
time1 = datetime.fromtimestamp(timestamp1)
time2 = datetime.fromtimestamp(timestamp2)
# 计算时间差
time_difference = abs(time2 - time1)
# 计算指定的时间差值
threshold = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
# 判断时间差是否大于指定的时间
2024-11-13 09:23:59 +00:00
return time_difference > threshold
def parse_time_string(time_str):
# 定义支持的时间单位
time_units = {
'd': 'days',
'h': 'hours',
'min': 'minutes',
's': 'seconds'
}
# 使用正则表达式匹配数字和单位的模式
matches = re.findall(fr"(\d+)({'|'.join(time_units.keys())})", time_str)
if not matches:
raise ValueError(f"Invalid time string format: {time_str}")
result = {}
for value, unit in matches:
if unit in time_units:
result[time_units[unit]] = int(value)
else:
raise ValueError(f"Unsupported unit: {unit}")
return result