【Python】time库和datetime库的介绍及用法

目录

一、time

1、time应用场景

2、time库-标准库

二、datetime

1、datetime应用场景

2、datetime库-标准库

三、time和datetime的区别


一、time

1、time应用场景

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=

2、time库-标准库

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())

二、datetime

1、datetime应用场景

Python的datetime模块在许多不同的场景中都有应用,以下是其中的一些例子:

  1. 数据分析 :在处理时间序列数据时,需要使用datetime进行日期的解析、提取以及转换。

  2. 定时任务 :如果你的Python脚本需要在某个特定的时间运行,或者以一定的时间间隔运行,你可以使用datetime模块来设定和计算这个时间。

  3. 日志记录 :在进行日志记录时,常常需要记录下事件发生的时间。这时可以用datetime模块生成当前的日期和时间。

  4. 数据库操作 :在从数据库查询或插入日期和时间类型的数据时,经常需要用到datetime模块来进行数据类型的转换。

  5. 网页爬虫 :在抓取网页数据时,通常需要记录数据的抓取时间,或者在特定时间抓取数据,这时你可以使用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对象,并提取出日期部分。

2、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的区别

timedatetime 都是 Python 中用于处理时间的模块,但它们之间存在一些差异:

  1. 功能: datetime 模块可以让你执行更复材藏的时间操作,如处理日期和时间的方面,解析字符串表示的时间等。time 模块更侧重于处理时间戳和Unix时间。

  2. 数据类型和方法: datetime 模块提供了 date, time, datetime, timedelta 等数据类型,并且提供了一组丰富的方法,如 today, now, utcnow, combine, strptime 等。time 模块则提供了一些函数,如 sleep, asctime, gmtime, time, ctime 等。

  3. 用途上,当我们需要更复杂的日期和时间操作,如格式化日期时间、日期加减、获取当前日期等,通常使用 datetime。而 time 更常用于基础的、没有那么复杂的时间操作,或者需要处理时间戳的场景。

  4. 时间范围: time 模块的 time 函数返回的是从1970年1月1日0点开始的秒数,对于处理距离现在很久远的时间(如公元1年),可能不尽人意,而 datetime 可以处理公元1年到公元9999年之间的日期和时间。

总的来说,datetime 提供了更完善的日期和时间处理功能,接口也更直观易用,而 time 则比较适合处理简单的时间操作和时间戳。

你可能感兴趣的:(python,python,笔记)