Python系列之datetime

datetime

datetime 模块提供了处理日期和时间的类。它支持日期、时间、时区等操作。

1 获取日期和时间

import datetime

def get_time(delta, unit, hours_offset=8):
    """
    :param delta: delta time
    :param unit: options: 'minutes', 'hours', 'days' or 'seconds' or 'none'
    :param hours_offset: East 8 time zone offset (Default value = 8)
    """
    # 创建东八区时区对象,偏移量为8小时
    tz_east_8 = datetime.timezone(datetime.timedelta(hours=hours_offset))
    # 获取当前时间
    now = datetime.datetime.now(tz_east_8)
    # 计算未来时间
    if unit == "none":
        return now
    elif unit == "seconds":
        return now + datetime.timedelta(seconds=delta)
    elif unit == "minutes":
        return now + datetime.timedelta(minutes=delta)
    elif unit == "hours":
        return now + datetime.timedelta(hours=delta)
    elif unit == "days":
        return now + datetime.timedelta(days=delta)
    else:
        raise ValueError("Unsupported unit. Please use 'seconds', 'minutes', 'hours', 'days' or 'none'.")

# 示例
# 获取当前时间
current_time = get_time(0, "none")
print("Current time:", current_time)
# 获取未来时间
future_time = get_time(10, "minutes")
print("Future time:", future_time)

2 当前时间转为字符串

将 datetime.datetime 或 datetime.date 类型转化为字符串格式

import datetime

def datetime_to_string(dt, format="%Y-%m-%d %H:%M:%S"):
    """
    :param dt: datetime.datetime or datetime.date
    :param format: format string
    :return: formatted string
    """
    if isinstance(dt, datetime.datetime):
        return dt.strftime(format)
    elif isinstance(dt, datetime.date):
        return dt.strftime(format.split(" ")[0])
    else:
        raise ValueError("Unsupported type. Please use datetime.datetime or datetime.date.")

# 示例
# 获取当前时间
current_time = datetime.datetime.now()
# 转换为字符串
current_time_str = datetime_to_string(current_time)
print("Current time as string:", current_time_str)
# 转换为日期
current_date = datetime.date.today()
# 转换为字符串
current_date_str = datetime_to_string(current_date, format="%Y-%m-%d")
print("Current date as string:", current_date_str)