python学习5--生成日期/生日
前言
python接口自动化添加员工信息时,需要填写生日,批量添加员工,如何随机生成生日呢?
python提供了一个time和calendar模块可以用于格式化日期和时间。
一、了解python3 日期和时间的基础知识
1.1 时间戳,time.time() #1597902084.742635
1.2 时间元组 格式:time.localtime(时间戳 或 空)、(年、月、日、小时、分钟、秒、一周第几日、一年第几日、夏令时)、time.strptime(时间字符串,时间格式字符串)
很多python函数用一个元组装起来的9组数字处理时间
时间元组:time.localtime(time.time())
time.localtime() #time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=14, tm_min=2, tm_sec=44, tm_wday=3, tm_yday=233, tm_isdst=0)
a=(2020,8,20,11,25,38,0,0,0) #自定义 9组数字
time.strptime("Thu Aug 20 11:42:27 2020","%a %b %d %H:%M:%S %Y")
time.strptime("2020-08-20 11:25:38","%Y-%m-%d %H:%M:%S")
1.3 格式化时间 格式:time.asctime(时间元组)
time.asctime(a))
time.asctime(time.localtime()) #Thu Aug 20 13:41:24 2020
1.4 格式化日期 格式:time.strftime(日期形式字符串,时间元组)
time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
time.strftime("%Y-%m-%d %H:%M:%S",a) #2020-08-20 13:41:24
time.strftime("%a %b %d %H:%M:%S %Y",a) #Thu Aug 20 13:41:24 2020
1.5 格式字符串转换为时间戳 格式:time.mktime(time.strptime(字符串,日期格式字符串)
a="Thu Aug 20 11:42:27 2020"
print(time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
b="2020-08-20 11:25:38"
print(time.mktime(time.strptime(b,"%Y-%m-%d %H:%M:%S")))
import time
print("时间戳:{}".format(time.time())) #当前时间戳
#时间元组
print("==时间元组==")
print(time.localtime(time.time())) #当前时间元组
print(time.localtime())
a=(2020,8,20,11,25,38,0,0,0)#自定义时间元组
print(time.strptime("Thu Aug 20 11:42:27 2020","%a %b %d %H:%M:%S %Y"))#格式化时间转元组
print(time.strptime("2020-08-20 11:25:38","%Y-%m-%d %H:%M:%S"))#格式化日期转元组
#格式化的时间 #Mon Aug 20 11:25:38 2020
print("==格式化时间==")
print(time.asctime(a))
print(time.asctime(time.localtime(time.time())))
#格式化日期
#格式化成 2016-01-01 11:20:30形式
print("==格式化日期==")
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
print(time.strftime("%Y-%m-%d %H:%M:%S",a))
#格式化成 2016-01-01 形式
print(time.strftime('%Y-%m-%d',a))
#格式化成Sat Mar 20 11:20:20 2016形式
print(time.strftime("%a %b %d %H:%M:%S %Y",time.localtime()))
print(time.strftime("%a %b %d %H:%M:%S %Y",a))
#格式字符串转换成时间戳
aa="Thu Aug 20 11:42:27 2020"
print(time.mktime(time.strptime(aa,"%a %b %d %H:%M:%S %Y")))
bb="2020-08-20 11:25:38"
print(time.mktime(time.strptime(bb,"%Y-%m-%d %H:%M:%S")))
print(time.strptime(bb,"%Y-%m-%d %H:%M:%S"))#时间元组
#将时间元组转成时间戳
print(time.mktime(a))
运行结果:
时间戳:1597906614.8230116 ==时间元组== time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=14, tm_min=56, tm_sec=54, tm_wday=3, tm_yday=233, tm_isdst=0) time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=14, tm_min=56, tm_sec=54, tm_wday=3, tm_yday=233, tm_isdst=0) time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=11, tm_min=42, tm_sec=27, tm_wday=3, tm_yday=233, tm_isdst=-1) time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=11, tm_min=25, tm_sec=38, tm_wday=3, tm_yday=233, tm_isdst=-1) ==格式化时间== Mon Aug 20 11:25:38 2020 Thu Aug 20 14:56:54 2020 ==格式化日期== 2020-08-20 14:56:54 2020-08-20 11:25:38 2020-08-20 Thu Aug 20 14:56:54 2020 Mon Aug 20 11:25:38 2020 1597894947.0 1597893938.0 time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=11, tm_min=25, tm_sec=38, tm_wday=3, tm_yday=233, tm_isdst=-1) 1597893938.0
二、生成日期/生日
import time import random #日期转换成元组 begin=(1971,1,1,0,0,0,0,0,0) #后面3个填写要求范围内的任意数字 end=(2014,12,31,23,59,59,0,0,0) #将时间元组转化成时间戳 dbegin=time.mktime(begin) dend=time.mktime(end) #随机取值 rdate=random.randint(dbegin,dend) #时间戳转时间元组,格式化日期 date=time.strftime("%Y-%m-%d",time.localtime(rdate)) print(date)
运行结果
1981-10-08
三、总结
平时经常使用:
1.获取时间戳
2.时间戳转日期
a=int(time.time()) print(a) print(time.strftime("%Y-%m-%d",time.localtime(a)))
3.time下的方法:
time.time() #时间戳,
time.localtime(时间戳) #时间元组
time.strptime(字符串,时间格式) #时间元组,
(1971,1,1,0,0,0,0,0,0) #时间元组
time.strftime(时间格式,时间元组) #日期字符串,
time.asctime(时间元组) #时间字符串
time.mktime(时间元组) 时间戳