Python 中有time 模块和datetime模块,因为datetime使用的语法结构跟sql比较类型,所以,我选择了使用datetime。

datetime有以下几个类。总结来看,如下图。

a940d8372f2f3dd88f28fa183d9edff0.png

下面是实例方法,包含各类型的格式转化、时间计算

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个周日来试试

5f7af230b6ad6b0d149c5d413d3132a9.png
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

可以看到,这个模块支持跨月份,并且考虑到了月末天数的特殊情况。

另附:日期格式化符号

0683f8c78e12636e94c69ff98af64eeb.png
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐