Python写一些业务场景,肯定避免不了要使用时间,那么怎么做好“时间管理”呢。以下是我经常用的几个用法,后续遇到新的也会一并补充进来,也当作为自己的一个笔记吧。
1、获取当前时间或生成指定时间
# 获取当前时间
time = datetime.datetime.now()
# 指定时间
time = datetime.datetime.strptime("2019-03-17 11:00:00", "%Y-%m-%d %H:%M:%S")
time = datetime.datetime.strptime("2019-03-17", "%Y-%m-%d")
2.strftime格式化时间
如需要获取指定时间格式,还有特定格式的年月日,星期,分钟,秒等。
format_time = datetime.datetime.now().strftime('%Y%m')
2.1 格式化参数大全
%y | 两位数的年份 |
%Y | 四位数的年份 |
%m | 月份 |
%d | 月内中的一天 |
%H | 24小时制小时数 |
%I | 12小时制小时数 |
%M | 分钟数 |
%S | 秒 |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天 |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数,星期天为星期的开始 |
%w | 星期,星期天为星期的开始 |
%W | 一年中的星期数,‘星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
3、日期加减
3.1 加减天数
# 日期加1天
print(datetime.datetime.now() + datetime.timedelta(days=1))
# 日期减1天
print(datetime.datetime.now() - datetime.timedelta(days=1))
print(datetime.datetime.now() + datetime.timedelta(days=-1))
3.2 时间增加**小时、增加**分钟
把3.1中的days改为hours minutes,就可以提前**小时/分钟了。
3.3 时间增加**个月,增加**年
from dateutil.relativedelta import relativedelta
# 增加一个月
add_one_month = datetime.datetime.now() + relativedelta(months=1)
# 增加一年
add_one_year = datetime.datetime.now() + relativedelta(years=1)
3.4 更加强大的用法 relativedelta。组合减少任意年,任意月,任意天:
# 组合增加一年,一月,一天
datetime.datetime.now() + relativedelta(years = 1, months =1, days =5)