目录
一、time
1、time应用场景
2、time库-标准库
二、datetime
1、datetime应用场景
2、datetime库-标准库
三、time和datetime的区别
Python的time
模块常常在如下场景中被使用到:
性能测量 :使用time
模块的time()
函数可以获取当前的时间戳,这在评估程序运行时间及性能优化时非常有用。例如,可以在代码块的开始和结束时分别获取时间戳,然后相减就可以得到代码执行花了多长时间。
import time
start_time = time.time()
# 这里是需要测量的代码块
end_time = time.time()
elapsed_time = end_time - start_time # 代码运行所用时间
print(f"The code took 0.0594 seconds to run.")
延时处理 :time
模块的sleep()
函数可以让当前的程序暂停运行指定的秒数。这在需要制造间歇或者等待的场景下非常有用,如轮询、限制请求速度或者做个定时任务等。
import time
print("Start")
time.sleep(5) # 暂停 5 秒
print("End")
时间格式化 :time
模块还有许多关于时间和日期的格式化函数。例如能获取当前的时间并以特定的方式格式化输出,或者将字符串格式的时间解析为时间元组等。
import time
# 获取当前时间,并格式化为字符串
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(current_time) # 输出:"2020-05-15 16:45:23"
# 将字符串格式的时间解析为时间元组
time_tuple = time.strptime("2020-05-15 16:45:23", "%Y-%m-%d %H:%M:%S")
print(time_tuple) # 输出:time.struct_time(tm_year=2020, tm_mon=5, tm_mday=15, tm_hour=
Python的time
库是Python标准库中的一部分,提供了各种与时间有关的函数。
这是一些主要功能:
time.time()
: 返回当前的unix时间戳,也就是1970年1月1日(00:00:00 GMT)至今的秒数。
time.sleep(seconds)
: 暂停执行当前线程所在的程序指定的秒数。
time.ctime([secs])
: 把一个时间戳(默认为当前时间)转换为一个字符串。
time.gmtime([secs])
: 把一个时间戳转换为一个代表UTC时区的struct_time。
time.localtime([secs])
: 把一个时间戳转换为一个代表当前时区的struct_time。
time.mktime(t)
: 把一个struct_time转换为一个时间戳。
time.strftime(format[, t])
:将struct_time类型的时间转化为指定的字符串形式。
time.strptime(string[, format])
:将字符串类型的时间转化为struct_time类型。
时间处理在很多程序中都是必须要考虑的问题,无论是数据记录、日志处理,还是定时任务、时间比较等等,都可能会用到time
库。
例如,让代码暂停运行一段时间:
import time
time.sleep(5) # 暂停5秒
print("Hello, world!")
这段代码将等待5秒,然后打印"Hello, world!"。
或者获取当前的unix时间戳:
import time
print(time.time())
Python的datetime模块在许多不同的场景中都有应用,以下是其中的一些例子:
数据分析 :在处理时间序列数据时,需要使用datetime进行日期的解析、提取以及转换。
定时任务 :如果你的Python脚本需要在某个特定的时间运行,或者以一定的时间间隔运行,你可以使用datetime模块来设定和计算这个时间。
日志记录 :在进行日志记录时,常常需要记录下事件发生的时间。这时可以用datetime模块生成当前的日期和时间。
数据库操作 :在从数据库查询或插入日期和时间类型的数据时,经常需要用到datetime模块来进行数据类型的转换。
网页爬虫 :在抓取网页数据时,通常需要记录数据的抓取时间,或者在特定时间抓取数据,这时你可以使用datetime模块。
例如,下面是一个数据分析中的例子,我们有一组时间序列数据,需要提取出每一天的日期:
from datetime import datetime
# 时间序列数据
time_series = [
"2020-01-01 10:00:00",
"2020-01-01 11:00:00",
"2020-01-01 12:00:00",
"2020-01-02 10:00:00",
"2020-01-02 11:00:00",
]
# 提取每一天的日期
dates = [datetime.strptime(x, "%Y-%m-%d %H:%M:%S").date() for x in time_series]
print(dates)
# 输出:[datetime.date(2020, 1, 1), datetime.date(2020, 1, 1), datetime.date(2020, 1, 1), datetime.date(2020, 1, 2), datetime.date(2020, 1, 2)]
在这个例子中,我们首先导入了datetime模块,然后使用一个列表推导式将每一条时间序列数据转换为datetime对象,并提取出日期部分。
Python的datetime
模块是Python标准库的一部分,用于处理日期和时间。该模块提供了日期和时间的操作和格式化方法。
datetime.datetime
:表示日期和时间。
datetime.date
:表示日期。
datetime.time
:表示时间。
datetime.timedelta
:表示日期或者时间间隔。
以下是一些常用示例:
import datetime
now = datetime.datetime.now()
print(now) # 输出:2023-01-22 14:55:10.618308 (取决于你运行的时间)
import datetime
dt = datetime.datetime(2023, 1, 22, 14, 55, 10)
print(dt) # 输出:2023-01-22 14:55:10
import datetime
now = datetime.datetime.now()
delta = datetime.timedelta(days=10, seconds=10)
new_time = now + delta
print(new_time) # 输出:新的日期和时间
import datetime
now = datetime.datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted) # 输出:"2023-01-22 14:55:10"
import datetime
dt_str = "2023-01-22 14:55:10"
dt = datetime.datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
print(dt) # 输出:2023-01-22 14:55:10
这些只是其中一部分功能,你可以查看官方文档以获取更多详细信息:https://docs.python.org/3/library/datetime.html
time
和 datetime
都是 Python 中用于处理时间的模块,但它们之间存在一些差异:
功能: datetime
模块可以让你执行更复材藏的时间操作,如处理日期和时间的方面,解析字符串表示的时间等。time
模块更侧重于处理时间戳和Unix时间。
数据类型和方法: datetime
模块提供了 date
, time
, datetime
, timedelta
等数据类型,并且提供了一组丰富的方法,如 today
, now
, utcnow
, combine
, strptime
等。time
模块则提供了一些函数,如 sleep
, asctime
, gmtime
, time
, ctime
等。
用途上,当我们需要更复杂的日期和时间操作,如格式化日期时间、日期加减、获取当前日期等,通常使用 datetime
。而 time
更常用于基础的、没有那么复杂的时间操作,或者需要处理时间戳的场景。
时间范围: time
模块的 time
函数返回的是从1970年1月1日0点开始的秒数,对于处理距离现在很久远的时间(如公元1年),可能不尽人意,而 datetime
可以处理公元1年到公元9999年之间的日期和时间。
总的来说,datetime
提供了更完善的日期和时间处理功能,接口也更直观易用,而 time
则比较适合处理简单的时间操作和时间戳。