当前位置: 首页 > news >正文

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_secprint(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 timeprint("程序开始")
# 暂停 3 秒
time.sleep(3)
print("程序继续,暂停了 3 秒")

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

import timedef countdown(seconds):while seconds > 0:print(f"倒计时: {seconds} 秒")time.sleep(1)  # 暂停 1 秒seconds -= 1print("时间到!")# 启动倒计时 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 timeclass Timer:def __init__(self):self.start_time = Nonedef 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_timeself.start_time = None  # 重置计时器 return elapsed_timereturn 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

相关文章:

Python之time时间库

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

Easyexcel(4-模板文件)

相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件) 文件导出 获取 resources 目录下的文件,使用 withTemplate 获…...

国产linux系统(银河麒麟,统信uos)使用 PageOffice 动态生成word文件

PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(LoogArch)芯片架构。 数据区域填充文本 数…...

Window11+annie 视频下载器安装

一、ffmpeg环境的配置 下载annie之前需要先配置ffmpeg视频解码器。 网址下载地址 https://ffmpeg.org/download.html1、在网址中选择window版本 2、点击后选择该版本 3、下载完成后对压缩包进行解压,后进行环境的配置 (1)压缩包解压&#…...

SAP GR(Group Reporting)配置篇(七)

1.7、合并处理的配置 1.7.1 定义方法 菜单路径 组报表的SAP S4HANA >合并处理的配置>定义方法 事务代码 SPI4...

共建智能软件开发联合实验室,怿星科技助力东风柳汽加速智能化技术创新

11月14日,以“奋进70载,智创新纪元”为主题的2024东风柳汽第二届科技周在柳州盛大开幕,吸引了来自全国的汽车行业嘉宾、技术专家齐聚一堂,共襄盛举,一同探寻如何凭借 “新技术、新实力” 这一关键契机,为新…...

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案,可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索,简洁高效,适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时,如果单纯的根…...

每日一题 LCR 079. 子集

LCR 079. 子集 主要应该考虑遍历的顺序 class Solution { public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ans;vector<int> temp;dfs(nums,0,temp,ans);return ans;}void dfs(vector<int> &…...

cocos creator 3.8 Node学习 3

//在Ts、js中 this指向当前的这个组件实例 //this下的一个数据成员node&#xff0c;指向组件实例化的这个节点 //同样也可以根据节点找到挂载的所有组件 //this.node 指向当前脚本挂载的节点//子节点与父节点的关系 // Node.parent是一个Node,Node.children是一个Node[] // th…...

微信小程序底部button,小米手机偶现布局错误的bug

预期结果&#xff1a;某button fixed 到页面底部&#xff0c;进入该页面时&#xff0c;正常显示button 实际结果&#xff1a;小米13pro&#xff0c;首次进入页面&#xff0c;button不显示。再次进入时&#xff0c;则正常展示 左侧为小米手机第一次进入。 遇到bug的解决思路&am…...

【计组】复习题

冯诺依曼型计算机的主要设计思想是什么&#xff1f;它包括哪些主要组成部分&#xff1f; 主要设计思想&#xff1a; ①采用二进制表示数据和指令&#xff0c;指令由操作码和地址码组成。 ②存储程序&#xff0c;程序控制&#xff1a;将程序和数据存放在存储器中&#xff0c;计算…...

Apache Maven 标准文件目录布局

Apache Maven 采用了一套标准的目录布局来组织项目文件。这种布局提供了一种结构化和一致的方式来管理项目资源&#xff0c;使得开发者更容易导航和维护项目。理解和使用标准目录布局对于有效的Maven项目管理至关重要。本文将探讨Maven标准目录布局的关键组成部分&#xff0c;并…...

Android 功耗分析(底层篇)

最近在网上发现关于功耗分析系列的文章很少&#xff0c;介绍详细的更少&#xff0c;于是便想记录总结一下功耗分析的相关知识&#xff0c;有不对的地方希望大家多指出&#xff0c;互相学习。本系列分为底层篇和上层篇。 大概从基础知识&#xff0c;测试手法&#xff0c;以及案例…...

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid

基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上&#xff0c;增加一个工具方法&#xff1a; public static IfcProductDefinitionShape CreateDiskSolidSha…...

IntelliJ+SpringBoot项目实战(四)--快速上手数据库开发

对于新手学习SpringBoot开发&#xff0c;可能最急迫的事情就是尽快掌握数据库的开发。目前数据库开发主要流行使用Mybatis和Mybatis Plus,不过这2个框架对于新手而言需要一定的时间掌握&#xff0c;如果快速上手数据库开发&#xff0c;可以先按照本文介绍的方式使用JdbcTemplat…...

利用oss进行数据库和网站图片备份

1.背景 由于网站迁移到香港云 服务器&#xff0c;虽然便宜&#xff0c;但是宿主服务器时不时重启&#xff0c;为了预防不可控的因素导致网站资料丢失&#xff0c;所以想到用OSS 备份网站数据&#xff0c;bucket选择在香港地区创建&#xff0c;这样和你服务器传输会更快。 oss…...

Excel - VLOOKUP函数将指定列替换为字典值

背景&#xff1a;在根据各种复杂的口径导出报表数据时&#xff0c;因为关联的表较多、数据量较大&#xff0c;一行数据往往会存在三个以上的字典数据。 为了保证导出数据的效率&#xff0c;博主选择了导出字典code值后&#xff0c;在Excel中处理匹配字典值。在查询百度之后&am…...

实验室管理平台:Spring Boot技术构建

3系统分析 3.1可行性分析 通过对本实验室管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本实验室管理系统采用SSM框架&#xff0c;JAVA作为开发语言&a…...

操作系统进程和线程——针对实习面试

目录 操作系统进程和线程什么是进程和线程&#xff1f;进程和线程的区别&#xff1f;进程有哪些状态&#xff1f;什么是线程安全&#xff1f;如何实现线程安全&#xff1f;什么是线程安全&#xff1f;如何实现线程安全&#xff1f; 进程间的通信有哪几种方式&#xff1f;什么是…...

使用 cnpm 安装 Electron,才是正确快速的方法

当然&#xff0c;下面是总结的几种安装 Electron 的方法&#xff0c;包括使用 npm 和 cnpm&#xff0c;以及一些常见的问题解决技巧。 ### 1. 使用 npm 安装 Electron #### 步骤 1: 初始化项目 在你的项目目录中初始化一个新的 Node.js 项目&#xff1a; bash npm init -y …...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...