# 日期时间案例演示

1、统计出那些人是夏季【6月-8月】出生的。

2、最大的比最小的大多少天

3、谁的生日最早，谁的生日最晚

from datetime import date, timedelta

from random import randint

def build_birthday(list_person_name:list):

# 初始化存储姓名：生日字典

name_birthday ={}.fromkeys(list_person_name)

# 生成生日

for key in name_birthday:

temp_year = randint(1990, 1999)

temp_month = randint(1, 12)

temp_day = randint(1, 30)

name_birthday[key] = date(temp_year, temp_month, temp_day)

# 返回

return name_birthday

def person_birthday_summer(name_birthday:dict):

# 用于存储夏天出生的key

list_person = []

for key in name_birthday:

if name_birthday[key].month >= 6 and name_birthday[key].month <= 8:

list_person.append(key)

# 返回

return list_person

def get_person_year_max(name_birthday:dict):

# 在字典中提取出生日

person_birth = list(name_birthday.values())

# 获取最大的生日

max_birthday = sorted(person_birth)[len(person_birth)-1]

# 遍历

for key in name_birthday:

if name_birthday[key] == max_birthday:

return key

def get_person_year_min(name_birthday:dict):

# 在字典中提取出生日

person_birth = list(name_birthday.values())

# 获取最小的生日

min_birthday = sorted(person_birth)[0]

# 遍历

for key in name_birthday:

if name_birthday[key] == min_birthday:

return key

def get_person_days(name_birthday:dict):

# 在字典中提取出生日

person_birth = list(name_birthday.values())

# 获取最大的生日

min_birthday = sorted(person_birth)[0]

max_birthday = sorted(person_birth)[len(person_birth)- 1]

# 返回天数

return (max_birthday-min_birthday).days

def get_person_early_birthday(name_birthday:dict):

for key in name_birthday:

name_birthday[key] = name_birthday[key].replace(year=1990)

person_birth = list(name_birthday.values())

return(sorted(person_birth)[0])

def get_person_later_birthday(name_birthday:dict):

for key in name_birthday:

name_birthday[key] = name_birthday[key].replace(year=1990)

person_birth = list(name_birthday.values())

return(sorted(person_birth)[len(person_birth)-1])

if __name__ == "__main__":

list_name = ["赵一", "杨二", "张三", "李四", "王五", "赵六", "马七", "郑八", "刘九", "胡十"]

# list_name中所有的学员生成生日

name_birthday = build_birthday(list_name)

print(name_birthday)

# 调用功能模块

birthday_summer_list =person_birthday_summer(name_birthday)

if len(birthday_summer_list) == 0:

print("没有人的生日是在夏天: ")

else:

print("生日为夏天的有：", birthday_summer_list)  # 需求一

# 需求二

print("生日最大的：", get_person_year_max(name_birthday))

print("生日最小的：", get_person_year_min(name_birthday))

print("最大比最小的天数：", get_person_days(name_birthday))

# 需求三

date_early =get_person_early_birthday(name_birthday)

print("生日最大的是：%d%d"%(date_early.month,date_early.day))

date_later = get_person_later_birthday(name_birthday)

print("生日最小的是：%d%d" % (date_later.month, date_early.day))

C:\python\python.exeC:/python/demo/file3.py

{'赵一':datetime.date(1992, 12, 30), '杨二': datetime.date(1995,6, 23), '张三': datetime.date(1990, 6, 21), '李四':datetime.date(1991, 9, 29), '王五':datetime.date(1996, 2, 26), '赵六':datetime.date(1995, 9, 18), '马七':datetime.date(1996, 7, 4), '郑八':datetime.date(1990, 3, 5), '刘九':datetime.date(1992, 3, 3), '胡十':datetime.date(1992, 11, 6)}

Process finished with exit code 0