Python 中有time 模块和datetime模块,因为datetime使用的语法结构跟sql比较类型,所以,我选择了使用datetime。
datetime有以下几个类。总结来看,如下图。
下面是实例方法,包含各类型的格式转化、时间计算
1. 时间格式转化
字符格式转化为时间格式
a='2020-03-30 14:32:47'
b=datetime.datetime.strptime(a,"%Y-%m-%d %H:%M:%S")
时间格式转化为字符格式
c=datetime.datetime.strftime(b,"%Y-%m-%d %H:%M:%S")
strptime、strftime之前经常记混,发现可以这样记忆:
strptime→ str point time ,str 指向time , 所以是 字符串 转化成时间
strftime→ str from time , 来自time 的 str,所以是 从time 转化为字符串
2. 加减一定的天数、小时
b+datetime.timedelta(hours=8) #输入
datetime.datetime(2020, 3, 30, 22, 32, 47) '01' #输出
3. 两个日期相减
dt2
输出的格式为datetime的格式
datetime.timedelta(days=10117, seconds=63635) ###输出
然后获取天数:
(b-dt2).days ##输入
10117 ##输出
如果你觉得想要知道多少像10117.4天这种带小数的结果:
round((b-dt2).days+(b-dt2).seconds/86400,2) #输入,秒换算为天,相加,并四舍五入
10117.74#输出
4. 第几周的计算
%U 一年中的星期数(00-53)星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
x选择2020年的第2个周日来试试
dt=datetime.datetime(2020,1,12,12,50,23)
datetime.datetime.strftime(dt,"%W") ###星期一为星期的开始
'01' #输出
星期一为一周的第一天,周天为一周的最后一天,所以,12号为第一周的最后一天。
datetime.datetime.strftime(dt,"%U")##星期天为星期的开始
'02' #输出
星期天为一周的第一天,周一为一周的最后一天,所以,12号为第二周的第一天。
5. 星期几的计算
datetime.datetime.strftime(b,"%a") #输入
'Mon' #输出
datetime.datetime.strftime(b,"%A")#输入
'Monday'#输出
数字格式的星期几
datetime.datetime.strftime(b,"%u") #输入
'1''#输出
6. 全部时间格式
datetime.datetime.strftime(b,"%c") )#输入
'Mon Mar 30 14:32:47 2020' #输出,展示星期月份和具体的时间
7. 一年内的第几天
datetime.datetime.strftime(b,"%j")#输入
'090' #输出,可使用int()或者float()转化为数值
8. 减去一定的月份
datetime不支持进行月份的相减,需要使用到另外一个模块dateutil
import datetime
from dateutil.relativedelta import relativedelta
datetime_now =datetime.datetime(2020, 3, 30, 14, 32, 47)
datetime_1_month_before = datetime_now - relativedelta(months=1)
print( datetime_1_month_before)
输出:2020-02-29 14:32:47
可以看到,这个模块支持跨月份,并且考虑到了月末天数的特殊情况。
另附:日期格式化符号