Python日期和时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能;
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间;
每个时间戳都是从某个时间到1970年1月1日 00:00:00的差值,时间间隔是以秒为单位的浮点小数;
Python 的 time 模块下有很多函数可以转换常见日期格式,如函数time.time()用于获取当前时间戳;
python有两个重要的时间模块,分别是time和datetime;
1、时间戳:time.time()(距离1970-01-01 00:00:00的总秒数)
import time
print(time.time())
#1562642630.3409584
2、time.localtime
该函数能将一个时间戳转换成元组的形式,如果没有指定时间戳,默认使用当前时间的时间戳。需要注意的是返回的时间是当地时间。
time.struct_time(tm_year=2019(年), tm_mon=7(月), tm_mday=(日),
tm_hour=11(时), tm_min=27(分), tm_sec=39(秒,0-61),
tm_wday=1(一周第几日,0-6 0是周一), tm_yday=190(一年第几日,0-266 儒略历), tm_isdst=0(夏令时));
此元组有9个元素(年,月,日,时,分,秒,周几,年中第几天,是否夏令时)
>>> import time
>>> print(time.localtime())
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=9, tm_hour=11, tm_min=27, tm_sec=39, tm_wday=1, tm_yday=190, tm_isdst=0)
3、time.gmtime
该函数和localtime()
的功能一样,只是它返回的时间是格林威治天文时间(UTC),也就是世界标准时间。中国时间为UTC+8。
>>> import time
>>> print(time.gmtime())
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=9, tm_hour=3, tm_min=43, tm_sec=36, tm_wday=1, tm_yday=190, tm_isdst=0)
4、time.sleep()
推迟调用线程的运行,传入几秒,休息几秒;
import time
print(time.time())
time.sleep(3)
print(time.time())
#1562644298.8693473
#1562644301.8699615
5、time.mktime()
该函数将一个元组转换成时间戳(1970纪元后经过的浮点秒数)。
>>> import time
>>> print(time.mktime(time.localtime()))
1562651251.0
6、time.clock()
用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
>>> import time
>>> print(time.clock())
0.04
7、time.strftime
接收以时间元组,并返回以可读字符串表示的当地时间;
import time
str_time = time.localtime()
print(time.strftime('%Y--%m--%d %H:%M:%S',str_time)) #字符串时间;
print(time.strftime('%Y--%m--%d %H:%M:%S')) #如果没有参数默认传入time.localtime();
#2019--07--09 17:21:50
#2019--07--09 17:21:50
8、time.strptime
把一个时间字符串解析为时间元组;
import time
print(time.strptime('2019-07-08 21:06:03','%Y-%m-%d %H:%M:%S'))
a = time.strptime('2019-07-08 21:06:03','%Y-%m-%d %H:%M:%S')
print(a.tm_year)
print(a.tm_mon)
print(a.tm_mday)
print(a.tm_wday)
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=8, tm_hour=21, tm_min=6, tm_sec=3, tm_wday=0, tm_yday=189, tm_isdst=-1)
2019
7
8
0
9、time.asctime()
接受时间元组并返回一个可读的形式为"Tue Jul 9 17:41:15 2019"(2019年7月9日 周二17时41分15秒)的24个字符的字符串。
如果没有传入参数,默认传入time.localtime();
>>> import time
>>> time.asctime()
'Tue Jul 9 17:41:15 2019'
10、time.ctime()
该函数将一个时间戳转换成格式化时间。如果没有传入参数,默认传入time.time()
。
>>> import time
>>> time.ctime()
'Tue Jul 9 18:05:24 2019'
datetime 模块
方法 | 含义 | 备注 |
---|---|---|
datetime.datetime.now() | 2019-07-09 18:13:23.803243 | |
datetime.datetime.now() + datetime.timedelta(days=3) | 当前时间+3天 | 2019-07-12 18:21:31.192274 |
current_time.replace(year=1977) | 更改当前时间 | 2005-07-09 18:26:31.365145 |
datetime.date.fromtimestamp(time.time()) | 时间戳直接转成日期格式 | 2019-07-09 |
当前时间
>>> import datetime
>>> print(datetime.datetime.now())
2019-07-09 18:13:23.803243
当前时间加三天
>>> import datetime
>>> print(datetime.datetime.now() + datetime.timedelta(3)) #如果要减三天就把参数改为-3
2019-07-12 18:21:31.192274
当前时间加两个小时
>>> import datetime
>>> print(datetime.datetime.now() + datetime.timedelta(hours=2))
2019-07-09 20:24:23.317376
#################################################################
import time
import datetime
cur_time=datetime.datetime.now()
print(cur_time.replace(year=2005)) #2005-07-09 18:29:19.672567 修改时间
print(datetime.date.fromtimestamp(1234)) #1970-01-01
print(datetime.date.fromtimestamp(time.time())) #2019-07-09 时间戳直接转换日期格式;