简介
今天介绍时间模块之一,datetime
模块。我们知道在python中表示时间的格式有三种:时间戳、元组、格式化时间。与time模块类似,datetime
模块也能够将datetime
类型转换成这三种类型。
调用datetime
模块的语句是:
1 |
>>>import datetime |
接下来分别介绍一些常用的方法。
获取当前时间
通过datetime.datetime.now()
获取当前时间。
代码演示:
1 2 3 4 5 6 |
>>>import datetime >>>datetime.datetime.now() datetime.datetime(2018, 10, 30, 15, 16, 54, 91809) >>>print(datetime.datetime.now()) 2018-10-30 15:18:08.642248 |
首先导入datetime
模块,然后调用datetime
类中的now
方法,可以获得一个datetime
类型时间,如果打印这个datetime
类型就能得到一个格式化时间。
该函数通过调用属性获得具体的值。
代码演示:
1 2 3 4 5 6 7 |
>>>import datetime >>>datetime.datetime.now().year 2018 >>>datetime.datetime.now().month 10 >>>datetime.datetime.now().day 30 |
获取指定时间
直接使用datetime()
可以获取指定时间。
代码演示:
1 2 3 4 5 6 |
>>>import datetime >>datetime.datetime(2018, 10, 30, 15, 26) datetime.datetime(2018, 10, 30, 15, 26) >>>print(datetime.datetime(2018, 10, 30, 15, 26)) 2018-10-30 15:26:00 |
转换成元组时间
通过调用timetuple()
方法可以将datetime
类型转换成元组格式。
代码演示:
1 2 3 4 5 6 |
>>>import datetime >>>datetime.datetime.now().timetuple() time.struct_time(tm_year=2018, tm_mon=10, tm_mday=30, tm_hour=15, tm_min=30, tm_sec=49, tm_wday=1, tm_yday=303, tm_isdst=-1) >>>datetime.datetime.now().timetuple().tm_year 2018 |
通过该方法获得一个包含时间的元组,进一步调用相关的属性就能获得具体的值。
转换成时间戳时间
通过调用timestamp()
方法可以将datetime
类型转换成时间戳格式。
代码演示:
1 2 3 4 5 6 |
>>>import datetime >>>datetime.datetime.now().timestamp() 1540885006.41552 >>>datetime.datetime(2018, 10, 30, 15, 37).timestamp() 1540885020.0 |
时间戳转换成datetime类型
通过调用fromtimestamp()
方法,将时间戳转换成datetime
类型。
代码演示:
1 2 3 4 |
>>>import datetime >>>x = 1540885020.0 >>>datetime.datetime.fromtimestamp(x) datetime.datetime(2018, 10, 30, 15, 37) |
该方法返回的是本地时间,如果想返回UTC时间,可以使用utcfromtimestamp()
方法。
代码演示:
1 2 3 4 |
>>>import datetime >>>x = 1540885020.0 >>>datetime.datetime.utcfromtimestamp(x) datetime.datetime(2018, 10, 30, 7, 37) |
转换成格式化时间字符串
通过调用strftime()
方法,将datetime
类型转换成格式化时间字符串。
代码演示:
1 2 3 |
>>>import datetime >>>datetime.datetime.now().strftime('%a, %b %d %H:%M') 'Tue, Oct 30 15:46' |
其中格式化字符的含义请参考time模块。
格式化时间字符串转换成datetime类型
通过调用strptime()
方法,将格式化时间字符串转换成datetime
类型。
代码演示:
1 2 3 |
>>>import datetime >>>datetime.datetime.now().strptime('2018-10-30 15:49:00', '%Y-%m-%d %H:%M:%S') datetime.datetime(2018, 10, 30, 15, 49) |
计算时间差
直接将两个datetime
类型时间相减,能够得到时间差。
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 |
>>>import datetime >>>a = datetime.datetime.now() >>>b = datetime.datetime.now() >>>c = b - a datetime.timedelta(0, 8, 336790) # 0天8秒336790毫秒 >>>c.total_seconds() 8.33679 >>>c.days 0 >>>c.seconds 8 |
通过timedelta()
函数还可以相加或相减某个时间。
代码演示:
1 2 3 4 5 6 7 |
>>>import datetime >>>datetime.datetime.now() + datetime.timedelta(days=1) datetime.datetime(2018, 10, 31, 16, 0, 27, 141864) >>>datetime.datetime.now() + datetime.timedelta(hours=1) datetime.datetime(2018, 10, 30, 17, 1, 14, 156105) >>>datetime.datetime.now() + datetime.timedelta(minutes=-30) datetime.datetime(2018, 10, 30, 15, 32, 1, 922569) |
总结
本文介绍了datetime
模块的使用,注意datetime
的时间是一个datetime
类型, 可以实现与其他三种时间格式的转换。