1. datetime库
1.1
datetime.date
1)
datetime.date.today()
返回今日,输出的类型为date类
import datetime
today = datetime.date.today()
print(today)
print(type(today))
–> 输出的结果为:
2020-03-04
<class 'datetime.date'>
将输出的结果转化为常见数据类型(字符串)
print(str(today))
print(type(str(today)))
date = str(today).split('-')
year,month,day = date[0],date[1],date[2]
print('今日的年份是{}年,月份是{}月,日子是{}号'.format(year,month,day))
–> 输出的结果为:(转化为字符串之后就可以直接进行操作)
2020-03-04
<class 'str'>
今日的年份是2020年,月份是03月,日子是04号
2)
datetime.date(年,月,日)
,获取当前的日期
date = datetime.date(2020,2,29)
print(date)
print(type(date))
–> 输出的结果为:
2020-02-29
<class 'datetime.date'>
1.2
datetime.datetime
1)
datetime.datetime.now()
输出当前时间,datetime类
now = datetime.datetime.now()
print(now)
print(type(now))
–> 输出的结果为:(注意秒后面有个不确定尾数)
2020-03-04 09:02:28.280783
<class 'datetime.datetime'>
可通过
str()
转化为字符串(和上面类似)
print(str(now))
print(type(str(now)))
–> 输出的结果为:(这里也可以跟上面的处理类似分别获得相应的数据,但是也可以使用下面更直接的方法来获取)
2020-03-04 09:04:32.271075
<class 'str'>
2) 通过自带的方法获取年月日,时分秒(这里返回的是
int
整型数据,注意区别)
now = datetime.datetime.now()
print(now.year,type(now.year))
print(now.month,type(now.month))
print(now.day,type(now.day))
print(now.hour,type(now.hour))
print(now.minute,type(now.minute))
print(now.second,type(now.second))
print(now.date(),type(now.date()))
print(now.date().year,type(now.date().year))
–> 输出的结果为:(首先注意输出中倒数第二个还是上面的
datetime.date
对象,这里是用来做时间对比的,同时除了这里的
datetime.datetime
有这种方法,
datetime.date
对象也有。因为此方法获取
second
是取的整型数据,自然最后的不确定尾数就被取整处理掉了)
2020 <class 'int'>
3 <class 'int'>
4 <class 'int'>
9 <class 'int'>
12 <class 'int'>
55 <class 'int'>
2020-03-04 <class 'datetime.date'>
2020 <class 'int'>
★★★1.3
datetime.timedelta
可以发现虽然可以将获得的数据经过处理后进行运算,但是还是有些麻烦,有没有直接在时间对象上面进行操作的方式呢?
datetime.timedelta
时间戳就是为了解决这个问题的,可以直接进行时间数据的运算处理,避免了数据处理
today = datetime.datetime.today()
yesterday = today - datetime.timedelta(1) #
print(today)
print(yesterday)
print(type(today),type(yesterday))
–> 输出的结果为:(datetime.datetime也有today()方法)
2020-03-04 09:24:25.349485
2020-03-03 09:24:25.349485
<class 'datetime.datetime'> <class 'datetime.datetime'>
如果使用
datetime.date
进行时间戳的处理会是什么样子的呢?
today = datetime.date.today() # datetime.datetime也有today()方法
yesterday = today - datetime.timedelta(1) #
print(today)
print(yesterday)
print(type(today),type(yesterday))
–> 输出的结果为:(注意最后输出的数据类型和上面的区别)
2020-03-04
2020-03-03
<class 'datetime.date'> <class 'datetime.date'>
那么直接进行日期的计算,该如何处理呢?这里以
datetime.date
数据为例(一般需要的就是日期,也不需要精确到秒,如果需要的话就使用
datetime.datetime
数据)
day = datetime.date(2020,2,29)
distance = today - day
print(distance)
print(distance.days)
print(type(distance))
–> 输出的结果为:(两个
datetime.date
数据运算,最后得到的是
datetime.timedelta
数据,注意
.days
方法的使用,可以直接获取相隔时间)
4 days, 0:00:00
4
<class 'datetime.timedelta'>
1.4
parse
日期字符串转换
parse
日期字符串解析,直接将str转化成datetime.datetime
from dateutil.parser import parse
date = '12-21-2017'
t = parse(date)
print(t,type(t))
–> 输出的结果为:(需要先导入这个解析包)
2020-02-29 00:00:00 <class 'datetime.datetime'>
各种日期字符串的解析,如下
print(parse('2000-1-1'),'\n',
parse('5/1/2014'),'\n',
parse('5/1/2014', dayfirst = True),'\n',
parse('22/1/2014'),'\n',
parse('Jan 31, 1997 10:45 PM'))
–> 输出的结果为:(注意第二个输出与第三个输出之间的区别,国际通用格式中,日在月之前,可以通过dayfirst来设置)
2000-01-01 00:00:00
2014-05-01 00:00:00
2014-01-05 00:00:00
2014-01-22 00:00:00
1997-01-31 22:45:00
1.5 时间字段的格式化输出及转换
1) 字符串转datetime格式化输出
time = datetime.datetime.strptime( 'January 01 2020', '%B %d %Y').date()
print(time)
–> 输出的结果为:
datetime.date(2020, 1, 1)
2) datetime数据转字符串输出
today = datetime.datetime.today()
print(today.strftime('%Y/%m/%d'))
–> 输出的结果为: