近期本人在许多函数操作中经常用到时间或日期类数据 ,对此进行一个模块总结:
当对日期类数据进行操作时必然要用到'datetime'模块:import datetime
1、本地当前时间(带时区)
t1 = datetime.datetime.now()
>>2018-12-31 19:35:44.178960 数据类型为 <class 'datetime.datetime'>
(不带时区)
datetime.datetime.utcnow()
2018-12-31 11:35:44.178960
2、从日期时间对象中提取日期或时间
t1.date()
t1.time()
3、格式化:
strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。常用与转换日期数据格式及写入文件操作。
t2 = t1.strftime("%Y/%m/%d %H:%M:%S")
>>2018/12/31 19:35:44 数据类型为 <class 'str'>
strptime()函数常用于将字符串类型日期数据转换为日期类型数据,与strftime()作用相对;常用作日期数据排序时比较数据。
t3 = datetime.datetime.strptime(t2,"%Y-%m-%d %H:%M:%S")
>>2018-12-31 19:35:44 数据类型为 <class 'datetime.datetime'>
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
4、时间差
datetime.timedelta对象代表两个时间之间的时间差,两个date或datetime对象相减就可以返回一个timedelta对象。
针对时间存储,timedelta内部只能存储days,seconds,microseconds,其他参数的值会自动按如下规则进行转换:
1 millisecond(毫秒)转换成 1000 microseconds(微秒)
1 minute 转换成 60 seconds
1 hour 转换成 3600 seconds
1 week转换成 7 days
t3 = datetime.timedelta(minutes=60)
>>1:00:00
t1 + t3
2018-12-31 20:35:44.178960 数据类型为 <class 'datetime.datetime'>
通过random+timedelta 随机生成时间差函数可用于批量获取日期数据:
例代码
now = datetime.datetime.now()
for i in range(n):
d = datetime.timedelta(seconds=random.randint(start, end))
nd = now + d
时间戳转换:
dt = datetime.datetime.fromtimestamp(time.time())
自己生成日期数据:
dt = datetime(2018, 7, 31, 14, 21, 22)