Python之time时间库

time时间库

  • 概述
  • 获取当前时间
    • time库
    • datetime库
    • 区别
  • 时间元组处理
    • 获取时间元组的各个部分
    • 时间戳和时间元组的转换
  • 格式化时间
    • 格式化时间
    • 解析时间
    • 格式符号说明
  • 暂停程序
  • 计时操作
    • 简单计时
    • 高精度计时
    • 计时器类的实现
  • UTC时间操作
    • time库
    • datetime库

概述

time是Python标准库中的一个模块,用于处理时间相关的操作。它提供了各种函数来获取当前时间、格式化时间、进行时间的转换和计算等。

首先,需要导入 time 模块:

import time

获取当前时间

time库

  • 时间戳:返回自1970年1月1日以来的秒数。

    timestamp = time.time()
    print("当前时间戳:", timestamp)
    
  • 本地时间:返回一个表示本地时间的结构化时间。

    local_time = time.localtime()
    print("本地时间:", local_time)
    
  • 格式化时间:将时间格式化为可读字符串。

    formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
    print("格式化时间:", formatted_time)
    

使用time库获取当前时间

import time

# 获取当前时间戳
current_timestamp = time.time()
print("当前时间戳:", current_timestamp)

# 将时间戳转换为本地时间
local_time = time.localtime(current_timestamp)

# 格式化输出当前时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("当前本地时间:", formatted_time)

输出结果:

当前时间戳: 1729261034.7482784
当前本地时间: 2024-10-18 22:17:14

datetime库

datetime是一个与time类似的库。它库提供了更强大的时间和日期处理功能。

以下是使用datetime库获取当前时间的示例:

from datetime import datetime

# 获取当前时间
current_datetime = datetime.now()
print("当前日期和时间:", current_datetime)

# 格式化输出当前时间
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的当前时间:", formatted_datetime)

# 获取单独的日期和时间
current_date = current_datetime.date()
current_time = current_datetime.time()
print("当前日期:", current_date)
print("当前时间:", current_time)
当前日期和时间: 2024-10-18 22:17:55.574988
格式化后的当前时间: 2024-10-18 22:17:55
当前日期: 2024-10-18
当前时间: 22:17:55.574988

区别

time库:适合简单的时间获取和格式化操作。

datetime库:提供了更多功能,如日期和时间的加减、比较等,适合更复杂的时间处理需求。

时间元组处理

时间元组包含年、月、日、小时、分钟、秒等信息,可以通过索引访问这些信息。

获取时间元组的各个部分

可以直接从时间元组中提取年、月、日、小时、分钟、秒等。

import time

# 获取当前本地时间的时间元组
local_time_tuple = time.localtime()

year = local_time_tuple.tm_year
month = local_time_tuple.tm_mon
day = local_time_tuple.tm_mday
hour = local_time_tuple.tm_hour
minute = local_time_tuple.tm_min
second = local_time_tuple.tm_sec

print(f"当前时间: {year}-{month}-{day} {hour}:{minute}:{second}")

时间戳和时间元组的转换

使用time.mktime(t):将时间元组转换为时间戳(本地时间)。

import time

# 创建一个时间元组
time_tuple = (2024, 10, 1, 12, 0, 0, 0, 0, -1)  # 2024年10月1日 12:00:00

# 转换为时间戳
timestamp = time.mktime(time_tuple)
print("时间戳:", timestamp)

使用time.asctime([t]):将时间元组转换为可读的字符串格式。

import time

# 获取当前时间的时间元组
current_time_tuple = time.localtime()

# 将当前时间元组转换为可读字符串
current_time_str = time.asctime(current_time_tuple)
print("当前时间:", current_time_str)

格式化时间

格式化时间

time.strftime(format, t)函数用于将时间元组t格式化为字符串。format是一个格式字符串,指定了输出的格式。

import time

# 获取当前时间的时间元组
current_time = time.localtime()

# 格式化时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time)
print("当前时间:", formatted_time)

解析时间

time.strptime(string, format)函数用于将字符串解析为时间元组。

import time

# 时间字符串
time_string = "2023-10-01 12:30:45"

# 解析时间字符串
time_tuple = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")

# 输出时间元组
print("时间元组:", time_tuple)

输出结果:

时间元组: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=1, tm_hour=12, tm_min=30, tm_sec=45, tm_wday=6, tm_yday=274, tm_isdst=-1)

格式符号说明

格式化字符串用途举例
%Y年(4位数字)2024
%y年(后2位数字)24
%m月(数字)12
%B月(英文)December
%b月(缩写)Dec
%A星期(英文)Monday
%a星期(缩写)Mon
%d日期(数字)11
%D完整日期(月/日/年)24/11/18
%p上午/下午PM
%H小时(24 小时制)18
%h小时(12 小时制)6
%M分钟55
%S33

使用time库获取当前时间并格式化输出

import time

# 获取当前时间戳
timestamp = time.time()
print("当前时间戳:", timestamp)

# 获取本地时间并格式化
local_time = time.localtime(timestamp)

# 使用不同的格式化字符串
formatted_full_year = time.strftime("%Y", local_time)  # 年(全写数字)
formatted_two_digit_year = time.strftime("%y", local_time)  # 年(后两位数字)
formatted_month_number = time.strftime("%m", local_time)  # 月(数字)
formatted_month_full = time.strftime("%B", local_time)  # 月(英文)
formatted_month_abbr = time.strftime("%b", local_time)  # 月(缩写)
formatted_weekday_full = time.strftime("%A", local_time)  # 星期(英文)
formatted_weekday_abbr = time.strftime("%a", local_time)  # 星期(缩写)
formatted_day = time.strftime("%d", local_time)  # 日期(数字)
formatted_full_date = time.strftime("%D", local_time)  # 完整日期(月/日/年)
formatted_am_pm = time.strftime("%p", local_time)  # 上午/下午
formatted_hour_24 = time.strftime("%H", local_time)  # 小时(24 小时制)
formatted_hour_12 = time.strftime("%I", local_time)  # 小时(12 小时制)
formatted_minute = time.strftime("%M", local_time)  # 分钟
formatted_second = time.strftime("%S", local_time)  # 秒

# 打印格式化后的时间
print("格式化时间示例:")
print("年(全写数字):", formatted_full_year)
print("年(后两位数字):", formatted_two_digit_year)
print("月(数字):", formatted_month_number)
print("月(英文):", formatted_month_full)
print("月(缩写):", formatted_month_abbr)
print("星期(英文):", formatted_weekday_full)
print("星期(缩写):", formatted_weekday_abbr)
print("日期(数字):", formatted_day)
print("完整日期(月/日/年):", formatted_full_date)
print("上午/下午:", formatted_am_pm)
print("小时(24 小时制):", formatted_hour_24)
print("小时(12 小时制):", formatted_hour_12)
print("分钟:", formatted_minute)
print("秒:", formatted_second)

输出类似以下内容

当前时间戳: 1729260848.0795202
格式化时间示例:
年(全写数字): 2024
年(后两位数字): 24
月(数字): 10
月(英文): October
月(缩写): Oct
星期(英文): Friday
星期(缩写): Fri
日期(数字): 18
完整日期(月//年): 10/18/24
上午/下午: PM
小时(24 小时制): 22
小时(12 小时制): 10
分钟: 14: 08

暂停程序

在Python中,可以使用time库的sleep()函数来暂停程序的执行。适用于需要延迟执行的场景,例如倒计时、动画效果等。

sleep(seconds):seconds参数可以是浮点数,表示暂停执行指定的秒数。

import time

print("程序开始")
# 暂停 3 秒
time.sleep(3)
print("程序继续,暂停了 3 秒")

一个简单的倒计时器示例,使用time.sleep()来实现每秒更新一次倒计时

import time

def countdown(seconds):
    while seconds > 0:
        print(f"倒计时: {seconds} 秒")
        time.sleep(1)  # 暂停 1 秒
        seconds -= 1
    print("时间到!")


# 启动倒计时 5 秒
countdown(5)

输出结果如下:

倒计时: 5 秒
倒计时: 4 秒
倒计时: 3 秒
倒计时: 2 秒
倒计时: 1 秒
时间到!

计时操作

在Python 中,time库可以用于计时和测量代码执行的时间。常用的方法包括time.time()time.perf_counter()

简单计时

time.time()返回当前的时间戳(自1970年1月1日以来的秒数)。可以使用它来测量代码块的执行时间。

import time

# 记录开始时间
start_time = time.time()

# 执行一些操作
time.sleep(2)  # 模拟耗时操作(例如,等待2秒)

# 记录结束时间
end_time = time.time()

# 计算执行时间
execution_time = end_time - start_time
print(f"代码执行时间: {execution_time:.2f} 秒")

高精度计时

time.perf_counter()提供了更高精度的计时器,适合用于性能测量。

import time

# 记录开始时间
start_time = time.perf_counter()

# 执行一些操作
time.sleep(2)  # 模拟耗时操作(例如,等待2秒)

# 记录结束时间
end_time = time.perf_counter()

# 计算执行时间
execution_time = end_time - start_time
print(f"代码执行时间: {execution_time:.4f} 秒")

计时器类的实现

创建一个简单的计时器类,方便重复使用。

import time

class Timer:
    def __init__(self):
        self.start_time = None

    def start(self):
        self.start_time = time.perf_counter()

    def stop(self):
        if self.start_time is None:
            raise ValueError("Timer has not been started.")
        end_time = time.perf_counter()
        elapsed_time = end_time - self.start_time
        self.start_time = None  # 重置计时器 return elapsed_time
        return elapsed_time


# 使用计时器
timer = Timer()

timer.start()
time.sleep(1.5)  # 模拟耗时操作
elapsed_time = timer.stop()

print(f"计时器记录的时间: {elapsed_time:.4f} 秒")

UTC时间操作

使用time库处理UTC时间相对简单,适合进行基本的时间操作。如果有更复杂的时间处理需求,建议使用datetimepytz库。

time库

1.使用time.gmtime()获取当前的UTC时间,并将其转换为时间元组。

import time

# 获取当前 UTC 时间的时间元组
utc_time_tuple = time.gmtime()

print(f"当前 UTC 时间的时间元组: {utc_time_tuple}")

输出:

当前 UTC 时间的时间元组: time.struct_time(tm_year=2024, tm_mon=10, tm_mday=18, tm_hour=14, tm_min=51, tm_sec=24, tm_wday=4, tm_yday=292, tm_isdst=0)

2.可以使用 time.strftime()函数将时间元组格式化为字符串。

import time

# 获取当前 UTC 时间的时间元组
utc_time_tuple = time.gmtime()

# 格式化输出
formatted_utc = time.strftime("%Y-%m-%d %H:%M:%S", utc_time_tuple)
# 当前 UTC 时间: 2024-10-18 14:54:07
print(f"当前 UTC 时间: {formatted_utc}")

3.如果想获取当前UTC时间的时间戳,可以使用time.time()函数。

import time

# 获取当前 UTC 时间的时间戳
utc_timestamp = time.time()

print(f"当前 UTC 时间戳: {utc_timestamp}")

4.如果有一个时间戳,可以使用time.gmtime()将其转换为 UTC 时间的时间元组。

import time

# 获取当前 UTC 时间的时间戳
utc_timestamp = time.time()

# 将时间戳转换为 UTC 时间的时间元组
utc_time_tuple = time.gmtime(utc_timestamp)

# 格式化输出
formatted_utc = time.strftime("%Y-%m-%d %H:%M:%S", utc_time_tuple)
print(f"当前 UTC 时间: {formatted_utc}")

datetime库

1.使用datetime.datetime.utcnow()方法可以获取当前的UTC时间。

from datetime import datetime

# 获取当前 UTC 时间
utc_now = datetime.utcnow()
print(f"当前 UTC 时间: {utc_now}")

2.使用strftime方法将UTC时间格式化并输出字符串,以便更易读。

from datetime import datetime

# 获取当前 UTC 时间
utc_now = datetime.utcnow()

# 格式化输出
formatted_utc = utc_now.strftime("%Y-%m-%d %H:%M:%S")
print(f"当前 UTC 时间: {formatted_utc}")

3.如果需要处理时区,可以使用pytz库(需要安装)来获取带时区的UTC时间。

from datetime import datetime
import pytz

# 获取 UTC 时区对象
utc_timezone = pytz.utc

# 获取当前 UTC 时间并设置时区
utc_now = datetime.now(utc_timezone)
print(f"当前带时区的 UTC 时间: {utc_now}")

4.如果需要将本地时间转换为UTC时间,可以使用astimezone()方法。

from datetime import datetime
import pytz

# 获取当前本地时间
local_now = datetime.now()

# 将本地时间转换为 UTC 时间
local_timezone = pytz.timezone("Asia/Shanghai")  # 例如,使用上海时区
local_now = local_timezone.localize(local_now)  # 本地化
utc_now = local_now.astimezone(pytz.utc)  # 转换为 UTC 时间

print(f"当前本地时间: {local_now}")
print(f"转换后的 UTC 时间: {utc_now}")

输出结果:

当前本地时间: 2024-10-18 22:45:30.948967+08:00
转换后的 UTC 时间: 2024-10-18 14:45:30.948967+00:00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeDevMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值