datetime 模块学习
项目开发中,必不可少要解决日期的选择问题。所以花了些时间学习了 datetime 模块。
datetime 模块分成三个大部分, 其中:
1. datetime.date : date 部分只含有年 月 日信息。
2. datetime.time : time 部分只含有时 分 秒 微秒。
3. datetime.datetime : datetime 部分包含 date 和 time 两部分, 也就是包含年 月 日 时 分 秒 微秒。
一.datetime.date
1.1 创建自定义日期
注意:个位数的月和日前面不要加 0
import datetime
d = datetime.date(2019,4,1)
print(d)
2019-04-01
1.2 获取本地时间
tday = datetime.date.today()
print(tday)
2019-04-01
分别获取本地时间的年,月,日,周
print(tday.year)# 获取年
2019
print(tday.month)# 获取月
4
print(tday.day)# 获取日
4
print(tday.weekday())# 获取星期几,0-6代表周一到周天
0
print(tday.isoweekday())# 获取星期几,1-7代表周一到周天
1
1.3 datetime.timedelta 方法可以对时间进行运算操作
datetime.date 对象 = datetime.date 对象 ± datetime.timedelta 对象
计算明天日期
import datetime
# 获得本地日期
tday = datetime.date.today()
# 定义操作时间 day=7 也就是可以对另一个时间对象加7天或者减少7点
tdelta = datetime.timedelta(days=7)
# 打印今天的日期
print('今天的日期:{}'.format(tday))
# 打印七天后的日期
print('从今天向前推7天:{}'.format(tday + tdelta))
今天的日期:2019-04-01
从今天向前推7天:2019-04-08
也可以直接从 datetime 里导入 datetime 和 timedelta 来操作
from datetime import datetime
from datetime import timedelta
now = datetime.now()
aDay = timedelta(days=1) #主要控制days这个参数计算日期
now = now + aDay
print(now.strftime('%Y-%m-%d')) #转换时间格式
2019-04-02
now = datetime.now()
aDay = timedelta(days=-1) #计算昨天日期
now = now + aDay
print(now.strftime('%Y-%m-%d'))
2019-03-31
1.4 计算某日离今日有多少天
bday = datetime.date(2001,1,24) #开始日期
tday = datetime.date.today() # 今天的日期
days = bday - tday
print('开始日期:{}'.format(bday))
print('今天的日期:{}'.format(tday))
print('隔了{}'.format(days))
开始日期:2001-01-24
今天的日期:2019-04-01
隔了-6641 days, 0:00:00
二.datetime.time
t = datetime.time(9, 30, 45, 100000)
print(t)
09:30:45.100000
分别获取 datetime.time 对象的 小时 分钟 秒 微秒
print(t.hour)
print(t.minute)
print(t.second)
print(t.microsecond)
9
30
45
100000
三.datetime.datetime
如果我们想用 年 月 日 小时 分钟 秒 微秒
这样的日期时间
, 这时候就需要 datetime.datetime 对象出场啦
import datetime
dt = datetime.datetime(2016, 7, 26, 12, 30, 45, 100000)
print(dt)
2018-07-26 12:30:45.100000
print(dt.date()) #获得datetime.date对象
2018-07-26
print(dt.time()) 获得datetime.time对象
12:30:45.100000
# 等价于
from datetime import datetime
dt = datetime(2018, 7, 26, 12, 30, 45, 100000)
print(dt)
2018-07-26 12:30:45.100000
print(dt.date()) #获得datetime.date对象
2018-07-26
print(dt.time()) 获得datetime.time对象
12:30:45.100000
datetime.datetime 对象遵循着之前的运算法则
datetime.timedelta
对象 = datetime.datetime
对象 ± datetime.datetime
对象
import datetime
dt = datetime.datetime(2018, 9, 7, 21, 28, 45, 100000)
tdelta = datetime.timedelta(days=12)
print(dt + tdelta)
2018-09-19 21:28:45.100000
四.datetime.strptime()和 datetime.strftime()
datetime
是模块,datetime
模块还包含一个datetime
类,通过from datetime import datetime
导入的才是datetime
这个类
你也可以直接 import datetime。不过后面要用 datetime.datetime(), 这个前面提到过。
strptime() : 用户输入的日期和时间是字符串,要处理日期和时间,首先必须把 str 转换为 datetime。转换方法是通过datetime.strptime()
实现,需要一个日期和时间的格式化字符串:
from datetime import datetime
dt = '2018-8-1 18:20:20'
cday = datetime.strptime(dt, '%Y-%m-%d %H:%M:%S')
print(cday)
2018-08-01 18:20:20
strftime() : 后台提取到 datetime 对象后,要把它格式化为字符串显示给用户,就需要转换为 str,转换方法是通过strftime()
实现的,同样需要一个日期和时间的格式化字符串:
from datetime import datetime
now = datetime.now()
print(now.strftime('%Y-%m-%d'))
2019-04-01
Strftime 需要的参数有很多,下面介绍一下最长用的一些参数:
格式参数:
%Y 带世纪部分的十制年份
%m 十进制表示的月份
%d 十进制表示的每月的第几天
%H 24 小时制的小时
%M 十时制表示的分钟数
%S 十进制的秒数
datetime 眼
很棒。很详细
可以,很详细