auto_build_launcher/utils/time_utils.py

114 lines
3.6 KiB
Python
Raw Normal View History

2025-07-07 13:52:21 +00:00
import time
import datetime
from enum import Enum
class TimeUtils:
"""
时间工具类
功能
1. 获取当前时间的各种格式化输出
2. 时间转换
3. 时间计算
"""
class Weekday(Enum):
MONDAY = "星期一"
TUESDAY = "星期二"
WEDNESDAY = "星期三"
THURSDAY = "星期四"
FRIDAY = "星期五"
SATURDAY = "星期六"
SUNDAY = "星期日"
@staticmethod
def get_current_time():
"""
获取当前时间格式----
返回str例如2023-11-15-14-30
"""
now = datetime.datetime.now()
return now.strftime("%Y-%m-%d-%H-%M")
@staticmethod
def get_current_time_str():
"""
获取当前时间格式----
返回str例如2023-11-15-14-30
"""
now = datetime.datetime.now()
return now.strftime("%Y%m%d%H%M")
@staticmethod
def get_current_time_with_weekday():
"""
获取当前时间和星期几
返回str例如2023-11-15-14-30 星期三
"""
now = datetime.datetime.now()
weekday = TimeUtils.Weekday((now.weekday() + 1) % 7 + 1).value
return f"{now.strftime('%Y-%m-%d-%H-%M')} {weekday}"
@staticmethod
def get_timestamp():
"""
获取当前时间戳
返回int例如1636969800
"""
return int(time.time())
@staticmethod
def get_formatted_time(timestamp=None, format_str="%Y-%m-%d %H:%M:%S"):
"""
格式化时间
:param timestamp: 时间戳默认为当前时间
:param format_str: 格式字符串
返回str例如2023-11-15 14:30:00
"""
if timestamp is None:
timestamp = time.time()
return time.strftime(format_str, time.localtime(timestamp))
@staticmethod
def time_str_to_timestamp(time_str, format_str="%Y-%m-%d %H:%M:%S"):
"""
时间字符串转时间戳
:param time_str: 时间字符串
:param format_str: 格式字符串
返回int例如1636969800
"""
time_array = time.strptime(time_str, format_str)
return int(time.mktime(time_array))
@staticmethod
def get_time_difference(start_time, end_time=None, format_str="%Y-%m-%d %H:%M:%S"):
"""
计算两个时间的差值
:param start_time: 开始时间字符串或datetime对象
:param end_time: 结束时间字符串或datetime对象默认为当前时间
:param format_str: 当参数为字符串时的格式
返回timedelta对象
"""
if isinstance(start_time, str):
start_time = datetime.datetime.strptime(start_time, format_str)
if end_time is None:
end_time = datetime.datetime.now()
elif isinstance(end_time, str):
end_time = datetime.datetime.strptime(end_time, format_str)
return end_time - start_time
# 使用示例
if __name__ == "__main__":
print("当前时间(年-月-日-时-分):", TimeUtils.get_current_time())
print("当前时间和星期:", TimeUtils.get_current_time_with_weekday())
print("当前时间戳:", TimeUtils.get_timestamp())
print("格式化当前时间:", TimeUtils.get_formatted_time())
time_str = "2023-11-15 14:30:00"
print(f"'{time_str}' 转时间戳:", TimeUtils.time_str_to_timestamp(time_str))
start_time = "2023-11-15 14:30:00"
print(f"'{start_time}' 到现在的时间差:", TimeUtils.get_time_difference(start_time))