datetime模块
###使用频率特别高 from datetime import datetime,timedelta # 拿到的是"时间对象" print(datetime.now())#2019-03-20 15:23:32.883745 # 将时间对象转换为时间戳 后面.是毫秒 f = datetime.now() s = datetime.timestamp(f) print(s)#1553066612.883745
# 将时间戳转为时间对象 print(datetime.fromtimestamp(s))#2019-03-20 15:23:32.883745 # 将字符串转换成时间对象 s = '2018-zz-20' f = datetime.strptime(s,'%Y-%m-%d') print(f,type(f))#2018-zz-20 00:00:00 <class 'datetime.datetime'>
# 将时间对象转换成字符串,注意跟time的格式不一样! f1 = datetime.now() s1 = datetime.strftime(f,'%Y-%m-%d') print(s1,type(s1))#2018-zz-20 <class 'str'> ### 做运算的是“时间对象” print(datetime.now() - timedelta(hours=10)) #2019-03-20 05:26:16.183136 print(datetime.now() - timedelta(days=1)) #2019-03-19 15:26:16.183136
时间运算相关
import datetime # 指定时间 print(datetime.datetime(2017,10,1,12,54,11,871281)) # 2017-10-01 12:54:11.871281 now = datetime.datetime.now() print(now) # 2020-03-16 20:55:10.457931 # 加5天 day5 = now + datetime.timedelta(days=5) print(day5) # 2020-03-21 20:55:10.457931 # 时间替换 f = now.replace(year=2222,month=3,day=5) print(f) # 2222-03-05 20:57:28.324392
datetime日期类型的比较
from datetime import datetime # 必须是字符串类型 NOW_STR = datetime.strftime(datetime.now(),"%Y-%m-%d %X") user_exp_time = "2020-03-14 00:00:00" # 转换为datetime类型再比较 date_now = datetime.strptime(NOW_STR,"%Y-%m-%d %X") date_user = datetime.strptime(user_exp_time,"%Y-%m-%d %X") print(date_now,type(date_now)) print(date_user,type(date_user)) """ 2020-04-09 10:07:50 <class 'datetime.datetime'> 2020-03-14 00:00:00 <class 'datetime.datetime'> """ print(date_now > date_user) # True
date.today
from datetime import date today = date.today() print(today,type(today)) # 2019-02-22 <class 'datetime.date'> today_str = today.strftime("%Y-%m-%d") print(today_str,type(today_str)) # 2019-02-22 <class 'str'>
日期格式化
- %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 当前时区的名称
- %% %号本身
可以看到,这里的格式化的月份和月份中的天数,默认是2
位数的,也就是说,如果小于10
,就会显示前缀0,如02月09日
。
日期格式化之去掉前导0