欢迎访问宙启技术站
智能推送

Python中的时间与日期函数详解

发布时间:2023-06-21 05:12:25

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中有很多用于时间和日期操作的函数和模块。掌握这些函数和模块可以让我们更加便捷地处理时间和日期,例如计算时间差、格式化时间、处理时区等等。需要注意的是,在处理时区等问题时,我们需要注意一些细节,例如夏令时、时区偏移量等问题。