time&datetime模块
这2个模块是功能相似的,可以对时间类型定义,主要有以下表示:
- 时间戳
- 格式化
- 元组
time模块
time.time()
方法- 功能:返回从1970年1月1日00:00:00 UTC到当前时刻的秒数(时间戳),这个数字是一个浮点数。它主要用于记录事件发生的时间戳,比如可以用于计算代码段的执行时间等。
- 示例:
import time
start_time = time.time()
# 这里放一段需要计算执行时间的代码
for i in range(1000000):
pass
end_time = time.time()
print("代码执行时间:", end_time - start_time, "秒")
time.sleep(seconds)
方法- 功能:让程序暂停执行指定的秒数。这在需要控制程序执行节奏的场景中非常有用,比如在循环中每次操作后等待一段时间,或者在网络请求等操作之间添加延迟。
- 示例:
import time
print("开始")
time.sleep(2) # 程序暂停2秒
print("结束")
time.localtime([secs])
方法- 功能:将一个时间戳(以秒为单位)转换为本地时间的结构体。如果不传入参数,默认使用当前时间戳。返回的结构体包含年、月、日、时、分、秒等信息。(本地时间)
- 示例:
import time
current_time_stamp = time.time()
local_time_struct = time.localtime(current_time_stamp)
print("年:", local_time_struct.tm_year)
print("月:", local_time_struct.tm_mon)
print("日:", local_time_struct.tm_mday)
print("时:", local_time_struct.tm_hour)
print("分:", local_time_struct.tm_min)
print("秒:", local_time_struct.tm_sec)
time.gmtime([secs])
方法- 功能:将一个时间戳(以秒为单位)转换为UTC(协调世界时)时间的结构体。和
localtime
方法类似,但返回的是UTC时间的信息。(世界时间) - 示例:
- 功能:将一个时间戳(以秒为单位)转换为UTC(协调世界时)时间的结构体。和
import time
current_time_stamp = time.time()
utc_time_struct = time.gmtime(current_time_stamp)
print("年:", utc_time_struct.tm_year)
print("月:", utc_time_struct.tm_mon)
print("日:", utc_time_struct.tm_mday)
print("时:", utc_time_struct.tm_hour)
print("分:", utc_time_struct.tm_min)
print("秒:", utc_time_struct.tm_sec)
time.strftime(format[,t])
方法- 功能:将时间结构体(
localtime
或gmtime
返回的那种结构体)转换为指定格式的字符串。format
参数是一个格式化字符串,用于指定输出时间字符串的格式。 - 示例:
- 功能:将时间结构体(
import time
local_time_struct = time.localtime()
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time_struct)
print("格式化后的时间:", formatted_time)
- 这里
%Y
表示四位年份,%m
表示月份(01 - 12),%d
表示日期(01 - 31),%H
表示小时(00 - 23),%M
表示分钟(00 - 59),%S
表示秒(00 - 59)。
time.strptime(string,format)
方法- 功能:与
strftime
相反,它是将一个时间字符串按照指定的格式解析为时间结构体。这在读取外部时间格式数据并进行处理时非常有用。 - 示例:
- 功能:与
import time
time_str = "2025-01-09 10:30:00"
format_str = "%Y-%m-%d %H:%M:%S"
parsed_time_struct = time.strptime(time_str, format_str)
print("解析后的时间结构体:", parsed_time_struct)
datatime模块
以下是 datetime
模块的一些主要方法:
datetime.now([tz])
:- 功能:返回当前的本地日期和时间,如果提供了
tz
参数(时区信息),则返回该时区的当前日期和时间。 - 示例代码:
- 功能:返回当前的本地日期和时间,如果提供了
from datetime import datetime
# 获取当前本地日期和时间
current_datetime = datetime.now()
print(current_datetime)
# 获取当前 UTC 日期和时间
from datetime import timezone
utc_datetime = datetime.now(timezone.utc)
print(utc_datetime)
代码解释:
- 首先从
datetime
模块导入datetime
类。 datetime.now()
会返回一个datetime
对象,包含当前的年、月、日、时、分、秒、微秒信息,使用的是本地时区。- 若要获取 UTC 时间,需要导入
timezone
类,并将timezone.utc
作为参数传递给datetime.now()
,它会根据 UTC 时区返回相应的日期和时间。
datetime.today()
:- 功能:与
datetime.now()
类似,返回当前的本地日期和时间,但不允许传递时区参数,始终返回本地时间。 - 示例代码:
- 功能:与
from datetime import datetime
# 获取当前本地日期和时间
current_datetime = datetime.today()
print(current_datetime)
代码解释:
- 此方法是
datetime.now()
的一个变体,它只返回本地日期和时间,没有参数。
datetime.fromtimestamp(timestamp, tz=None)
:- 功能:将一个 POSIX 时间戳(从 1970-01-01 00:00:00 UTC 开始的秒数)转换为
datetime
对象。可以选择指定时区,若不指定,默认为本地时区。 - 示例代码:
- 功能:将一个 POSIX 时间戳(从 1970-01-01 00:00:00 UTC 开始的秒数)转换为
from datetime import datetime
# 时间戳(例如 2025-01-09 23:17:51 的时间戳)
timestamp = 1736481471
# 转换为 datetime 对象
datetime_obj = datetime.fromtimestamp(timestamp)
print(datetime_obj)
# 转换为 UTC 时间
from datetime import timezone
utc_datetime_obj = datetime.fromtimestamp(timestamp, timezone.utc)
print(utc_datetime_obj)
代码解释:
- 首先定义一个时间戳,这里使用了一个表示
2025-01-09 23:17:51
的时间戳。 datetime.fromtimestamp(timestamp)
将时间戳转换为本地时间的datetime
对象。- 若要转换为 UTC 时间,传递
timezone.utc
作为时区参数。
datetime.strftime(format)
:- 功能:将
datetime
对象转换为指定格式的字符串。format
是一个格式化字符串,用于指定输出字符串的格式。 - 示例代码:
- 功能:将
from datetime import datetime
current_datetime = datetime.now()
formatted_string = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_string)
代码解释:
datetime.now()
获取当前日期和时间。strftime("%Y-%m-%d %H:%M:%S")
会将datetime
对象按照%Y-%m-%d %H:%M:%S
的格式转换为字符串,其中%Y
表示四位数年份,%m
表示月份(01-12),%d
表示日期(01-31),%H
表示小时(00-23),%M
表示分钟(00-59),%S
表示秒(00-59)。
datetime.strptime(date_string, format)
:- 功能:将日期字符串转换为
datetime
对象,需要指定日期字符串的格式。 - 示例代码:
- 功能:将日期字符串转换为
from datetime import datetime
date_string = "2025-01-09 23:17:51"
format_string = "%Y-%m-%d %H:%M:%S"
datetime_obj = datetime.strptime(date_string, format_string)
print(datetime_obj)
代码解释:
date_string
是需要转换的日期字符串,format_string
是日期字符串的格式。datetime.strptime(date_string, format_string)
会将字符串根据指定格式转换为datetime
对象。
datetime.replace(year, month, day, hour, minute, second, microsecond, tzinfo)
:- 功能:替换
datetime
对象中的部分或全部日期和时间信息。 - 示例代码:
- 功能:替换
from datetime import datetime
current_datetime = datetime.now()
new_datetime = current_datetime.replace(year=2026, month=2)
print(new_datetime)
代码解释:
datetime.now()
获取当前日期和时间。current_datetime.replace(year=2026, month=2)
将当前日期和时间中的年份改为 2026 年,月份改为 2 月,其他部分不变。
datetime.timestamp()
:- 功能:将
datetime
对象转换为 POSIX 时间戳(从 1970-01-01 00:00:00 UTC 开始的秒数)。 - 示例代码:
- 功能:将
from datetime import datetime
current_datetime = datetime.now()
timestamp = current_datetime.timestamp()
print(timestamp)
代码解释:
datetime.now()
获取当前日期和时间。current_datetime.timestamp()
将该datetime
对象转换为一个浮点数时间戳,可用于存储或传输时间信息。
datetime.date()
和datetime.time()
:- 功能:
datetime.date()
从datetime
对象中提取日期部分,返回一个date
对象,包含年、月、日信息。datetime.time()
从datetime
对象中提取时间部分,返回一个time
对象,包含时、分、秒、微秒信息。
- 示例代码:
- 功能:
from datetime import datetime
current_datetime = datetime.now()
date_part = current_datetime.date()
time_part = current_datetime.time()
print("日期部分:", date_part)
print("时间部分:", time_part)
代码解释:
datetime.now()
获取当前日期和时间。current_datetime.date()
提取日期部分。current_datetime.time()
提取时间部分。
datetime.utcnow()
:- 功能:返回当前的 UTC 日期和时间。
- 示例代码:
from datetime import datetime
utc_now = datetime.utcnow()
print(utc_now)
代码解释:
- 此方法直接返回当前的 UTC 日期和时间,不考虑本地时区,返回的
datetime
对象的时区信息默认为None
。
datetime.utcoffset()
:- 功能:如果
datetime
对象有时区信息,返回该时区相对于 UTC 的偏移量;如果没有时区信息,返回None
。 - 示例代码:
- 功能:如果
from datetime import datetime, timezone
utc_datetime = datetime.now(timezone.utc)
offset = utc_datetime.utcoffset()
print(offset)
代码解释:
datetime.now(timezone.utc)
获取 UTC 时间的datetime
对象。utc_datetime.utcoffset()
会返回该 UTC 时间对象相对于 UTC 的偏移量,对于 UTC 时间,偏移量为timedelta(0)
,表示没有偏移。
datetime.astimezone(tz)
:- 功能:将
datetime
对象转换为另一个时区的时间。 - 示例代码:
- 功能:将
from datetime import datetime, timezone
import pytz
current_datetime = datetime.now()
# 转换为东京时区
tokyo_timezone = pytz.timezone('Asia/Tokyo')
tokyo_datetime = current_datetime.astimezone(tokyo_timezone)
print(tokyo_datetime)
代码解释:
- 首先使用
datetime.now()
获取当前本地日期和时间。 pytz.timezone('Asia/Tokyo')
获取东京的时区对象。current_datetime.astimezone(tokyo_timezone)
将当前日期和时间转换为东京时区的时间。需要注意的是,这里使用了pytz
模块,需要提前安装,可以通过pip install pytz
安装。
datetime.timedelta(days, seconds, microseconds, milliseconds, minutes, hours, weeks)
:- 功能:表示两个
datetime
对象之间的时间差,可以用来进行日期和时间的加减运算。 - 示例代码:
- 功能:表示两个
from datetime import datetime, timedelta
current_datetime = datetime.now()
one_day_later = current_datetime + timedelta(days=1)
print(one_day_later)
代码解释:
datetime.now()
获取当前日期和时间。timedelta(days=1)
创建一个表示一天时间差的timedelta
对象。current_datetime + timedelta(days=1)
将当前日期和时间加上一天的时间差,得到一天后的日期和时间。
这些方法涵盖了 datetime
模块的基本使用,包括时间的创建、转换、格式化、运算和时区处理等,能满足日常开发中大部分的日期和时间操作需求。