python3 中时间戳、时间、日期的转换和加减操作

一、时间戳、时间、日期的相互转换

在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两个模块,它们提供了丰富的函数和类,帮助我们完成时间戳、时间、日期的转换和计算。

在实际的开发中,我们经常需要对时间进行处理,了解这些操作,将能够让我们更加高效地完成工作。

后端开发标签