一、时间戳、时间、日期的相互转换
在Python3中,我们常常需要进行时间戳、时间、日期的相互转换。Python3内置的time模块提供了一些很有用的函数,帮助我们轻松完成这些转换。
1. 时间戳转时间
时间戳是指从1970年1月1日零时零分零秒开始到现在所经过的秒数。将时间戳转成本地时间的方法是time.localtime()。
import time
time_stamp = 1609459200
local_time = time.localtime(time_stamp)
print(local_time)
运行结果:
(2021, 1, 1, 0, 0, 0, 4, 1, 0)
其中,元组中的参数分别为:年,月,日,时,分,秒,周几(0-6,0为周一),一年中的第几天(1-366),夏令时(-1,0或1)。
如果想让时间显示得更加友好些,我们可以使用time.strftime()方法,将时间元组格式化为字符串。
show_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
print(show_time)
运行结果:
2021-01-01 00:00:00
上述代码中,strftime() 的第一个参数是格式化字符串,其中 %Y, %m, %d, %H, %M, %S 表示年、月、日、时、分、秒。
2. 时间转时间戳
将时间转成时间戳的方法是time.mktime()。
import time
time_str = '2021-01-01 00:00:00'
time_tuple = time.strptime(time_str, '%Y-%m-%d %H:%M:%S')
time_stamp = time.mktime(time_tuple)
print(time_stamp)
运行结果:
1609459200.0
需要注意的是,mktime() 方法只能转换本地时间,无法转换UTC时间。
3. 日期、时间、时间戳的相互转换
我们还可以使用datetime模块来实现日期、时间、时间戳的相互转换。
二、datetime模块的使用
datetime模块是Python3内置的处理日期和时间的模块,它提供了datetime、date、time等多个类,使得处理日期和时间变得更加方便。
1. datetime类
datetime.datetime类用于表示日期和时间。它有年、月、日、时、分、秒、微妙等属性。
创建一个datetime对象的方法是datetime.datetime()。
import datetime
dt = datetime.datetime(2021, 1, 1, 0, 0, 0)
print(dt)
运行结果:
2021-01-01 00:00:00
我们还可以使用now()方法获取当前时间。
import datetime
dt = datetime.datetime.now()
print(dt)
运行结果:
2021-12-10 10:00:00.000000
需要注意的是,now()方法返回的是当前本地时间。如果想获取UTC时间,则可以使用datetime.datetime.utcnow()方法。
2. date类
datetime.date类用于表示日期,它有年、月、日等属性。
创建一个date对象的方法是datetime.date()。
import datetime
d = datetime.date(2021, 1, 1)
print(d)
运行结果:
2021-01-01
如果想获取当前日期,则可以使用datetime.date.today()方法。
import datetime
d = datetime.date.today()
print(d)
运行结果:
2021-12-10
3. time类
datetime.time类用于表示时间,它有时、分、秒、微秒等属性。
创建一个time对象的方法是datetime.time()。
import datetime
t = datetime.time(10, 0, 0)
print(t)
运行结果:
10:00:00
4. 日期、时间、时间戳的相互转换
datetime对象与其他对象之间的相互转换,也非常方便。
三、日期、时间的加减操作
Python3中,我们可以对日期、时间、时间戳进行加减操作,计算出新的日期、时间、时间戳。
1. datetime对象的加减操作
对于一个datetime对象,我们可以使用timedelta类来进行加减操作。
timedelta类表示两个日期或时间之间的时间差,可以用来表示一段时间。
创建一个timedelta对象的方法是datetime.timedelta()。
import datetime
dt = datetime.datetime(2021, 1, 1, 0, 0, 0)
delta = datetime.timedelta(days=1)
new_dt = dt + delta
print(new_dt)
运行结果:
2021-01-02 00:00:00
上述代码中,我们使用timedelta(days=1)将dt的日期加1天,得到了new_dt。
2. date对象的加减操作
date对象的加减操作与datetime对象类似。同样是利用timedelta对象。
import datetime
d = datetime.date(2021, 1, 1)
delta = datetime.timedelta(days=1)
new_d = d + delta
print(new_d)
运行结果:
2021-01-02
3. time对象的加减操作
time对象的加减操作也类似,不过要注意的是,time对象只能进行减法操作,即不能将一个time对象加上一段时间。
import datetime
t1 = datetime.time(10, 0, 0)
delta = datetime.timedelta(hours=1)
t2 = datetime.datetime.combine(datetime.date.today(), t1) - delta
new_t = t2.time()
print(new_t)
运行结果:
09:00:00
上述代码中,我们先将time对象转成datetime对象,然后进行减法操作,最后再将结果转成time对象。
4. 时间戳的加减操作
时间戳的加减操作也可以使用timedelta类。
import datetime
time_stamp = 1609459200
delta = datetime.timedelta(days=1)
new_time_stamp = time_stamp + delta.total_seconds()
print(new_time_stamp)
运行结果:
1609545600.0
上述代码中,我们先利用timedelta对象得到一天的秒数,然后将时间戳加上这个秒数,即得到了新的时间戳。
四、小结
本文介绍了Python3中时间戳、时间、日期的相互转换,以及日期、时间的加减操作。
Python3中内置了time和datetime两个模块,它们提供了丰富的函数和类,帮助我们完成时间戳、时间、日期的转换和计算。
在实际的开发中,我们经常需要对时间进行处理,了解这些操作,将能够让我们更加高效地完成工作。