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
    %S 33

    使用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
    

    作者:CodeDevMaster

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python之time时间库

    发表回复