Python中的时间与日期函数详解
Python中有很多用于时间和日期操作的函数和模块。这些函数和模块可以帮助我们获取当前时间、格式化时间、计算时间差、解析时间字符串等等。
下面是一些常用的时间和日期函数:
1. datetime模块
datetime模块提供了一些用于日期和时间操作的类和函数。
1.1 datetime类
datetime类表示一个日期和时间,它包含year、month、day、hour、minute、second、microsecond等属性。创建datetime对象的方式如下:
import datetime now = datetime.datetime.now() # 获取当前日期和时间 dt = datetime.datetime(2022, 12, 31, 23, 59, 59) # 创建一个日期和时间对象
1.2 timedelta类
timedelta类表示两个日期和时间之间的时间差,例如计算两个日期相差的天数、小时数、分钟数等等。创建和使用timedelta对象的方式如下:
import datetime dt1 = datetime.datetime(2022, 1, 1, 0, 0, 0) dt2 = datetime.datetime(2023, 1, 1, 0, 0, 0) delta = dt2 - dt1 # 计算dt2和dt1相差的时间 print(delta.days) # 输出相差的天数 print(delta.seconds) # 输出相差的秒数
1.3 strftime函数
strftime函数可以将datetime对象格式化为指定格式的字符串。常用的格式符包括%Y、%m、%d、%H、%M、%S等等,表示年、月、日、小时、分钟、秒等等。示例如下:
import datetime
now = datetime.datetime.now()
s = now.strftime("%Y-%m-%d %H:%M:%S")
print(s)
1.4 strptime函数
strptime函数可以将字符串解析为datetime对象。需要指定字符串和格式化字符串。示例如下:
import datetime s = "2022-01-01 00:00:00" dt = datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S") print(dt)
2. time模块
time模块提供了一些用于时间操作的函数。
2.1 time函数
time函数返回当前时间的时间戳(以秒为单位)。示例如下:
import time now = time.time() # 获取当前时间戳(以秒为单位) print(now)
2.2 sleep函数
sleep函数可以让程序休眠指定的时间。示例如下:
import time
print("before sleep")
time.sleep(5)
print("after sleep")
程序会暂停5秒钟,然后输出“after sleep”。
3. calendar模块
calendar模块提供了一些用于处理日历的函数。
3.1 calendar函数
calendar函数可以生成一个日历。常用的参数有year和month,表示生成哪一年哪一月的日历。示例如下:
import calendar c = calendar.month(2022, 1) print(c)
输出的结果如下:
January 2022
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
4. dateutil模块
dateutil模块是Python中一个用于处理日期和时间的第三方库。它支持更复杂的日期和时间操作,例如可以处理时区、夏令时等问题。
4.1 parser函数
parser函数可以将字符串解析为datetime对象,类似于strptime函数。但是parser函数可以智能地识别时间字符串中的日期和时间部分,因此使用起来更加方便。示例如下:
from dateutil import parser s = "2022-01-01 00:00:00" dt = parser.parse(s) print(dt)
4.2 tzinfo类
tzinfo类表示时区信息。可以通过继承tzinfo类来自定义时区信息。示例如下:
from dateutil import tz
from datetime import datetime
class MyTZ(tz.tzinfo):
def __init__(self, utcoffset, name):
self._utcoffset = utcoffset
self._name = name
def utcoffset(self, dt):
return self._utcoffset
def tzname(self, dt):
return self._name
now = datetime.now(tz=MyTZ(tz.timedelta(hours=8), "CST"))
print(now)
输出的结果如下:
2022-10-13 15:08:49.381613+08:00 CST
这里自定义了时区信息,将时区设置为UTC+8。然后用datetime.now()函数获取当前时间,并指定时区为自定义的时区信息。最后输出的结果中会显示时区信息。
5. pytz模块
pytz模块是Python中用于处理时区信息的第三方库。它提供了全球各地的时区信息,可以方便地处理时间跨度和夏令时等问题。
5.1 timezone函数
timezone函数可以创建一个时区信息。可以指定时区信息所在的位置,例如“Asia/Shanghai”,也可以指定相对UTC的偏移量。示例如下:
import datetime
import pytz
tz = pytz.timezone("Asia/Shanghai")
now = datetime.datetime.now(tz=tz)
print(now)
输出的结果如下:
2022-10-13 15:15:10.779090+08:00
这里创建了一个时区信息,将时区设置为“Asia/Shanghai”,然后用datetime.datetime.now()函数获取当前时间,并指定时区为创建的时区信息。
总结
Python中有很多用于时间和日期操作的函数和模块。掌握这些函数和模块可以让我们更加便捷地处理时间和日期,例如计算时间差、格式化时间、处理时区等等。需要注意的是,在处理时区等问题时,我们需要注意一些细节,例如夏令时、时区偏移量等问题。
