#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2025/3/20 16:47 # @Author : AngesZhu # @File : get_time_random.py # @Desc : 随机时间获取函数 from typing import Any import random from datetime import datetime, timedelta from utils.logger_utils import logger def get_time(format: str="%Y-%m-%d", start: str=None, end: str=None, min_date: str=None, max_date: str=None): # 如果没有提供start和end,则使用默认的日期范围 if start is None: start = "2024-01-01" if end is None: end = datetime.now().strftime("%Y-%m-%d") # 将字符串日期转换为datetime对象 start = datetime.strptime(start, "%Y-%m-%d") end = datetime.strptime(end, "%Y-%m-%d") # 如果提供了min_date或max_date,则调整start和end if min_date is not None: min_date = datetime.strptime(min_date, "%Y-%m-%d") start = max(start, min_date) if max_date is not None: max_date = datetime.strptime(max_date, "%Y-%m-%d") end = min(end, max_date) # 确保start不大于end if start > end: raise ValueError("start must be less than or equal to end") # 计算日期范围的总天数 delta = (end - start).days # 生成随机天数 random_days = random.randint(0, delta) # 生成随机日期 random_date = start + timedelta(days=random_days) # 返回格式化后的日期字符串 return random_date.strftime(format) def get_time_random(format: str = "%Y-%m-%d", start: str = None, end: str = None, min_date: str = None, max_date: str = None, limit: str = 10, *args, **kwargs) -> Any: # 随机时间获取函数 """ 生成随机日期字符串。 :param format: 日期格式化字符串,默认为"%Y-%m-%d" :param start: 日期区间的开始日期,格式为"YYYY-MM-DD" :param end: 日期区间的结束日期,格式为"YYYY-MM-DD" :param min_date: 生成日期的最小日期,格式为"YYYY-MM-DD" :param max_date: 生成日期的最大日期,格式为"YYYY-MM-DD" :return: 格式化后的随机日期字符串 """ try: return True, [get_time(format, start, end, min_date, max_date) for i in range(limit)] except Exception as e: return False, e if __name__ == '__main__': # 示例用法 print(get_time()) # 随机生成一个日期字符串,格式为"YYYY-MM-DD" print(get_time(format="%Y-%m-%d")) # 随机生成一个日期字符串,格式为"YYYY/MM/DD" print(get_time(start="2020-01-01", end="2025-12-31")) # 随机生成2020年的日期 print(get_time(min_date="2023-01-01")) # 随机生成2023年及以后的日期 print(get_time(max_date="2025-12-31")) # 随机生成2022年及以前的日期