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 |
%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 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时间相对简单,适合进行基本的时间操作。如果有更复杂的时间处理需求,建议使用datetime
或pytz
库。
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,指向组件实例化的这个节点 //同样也可以根据节点找到挂载的所有组件 //this.node 指向当前脚本挂载的节点//子节点与父节点的关系 // Node.parent是一个Node,Node.children是一个Node[] // th…...

微信小程序底部button,小米手机偶现布局错误的bug
预期结果:某button fixed 到页面底部,进入该页面时,正常显示button 实际结果:小米13pro,首次进入页面,button不显示。再次进入时,则正常展示 左侧为小米手机第一次进入。 遇到bug的解决思路&am…...

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

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

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

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid
基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上,增加一个工具方法: public static IfcProductDefinitionShape CreateDiskSolidSha…...

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

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

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

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

操作系统进程和线程——针对实习面试
目录 操作系统进程和线程什么是进程和线程?进程和线程的区别?进程有哪些状态?什么是线程安全?如何实现线程安全?什么是线程安全?如何实现线程安全? 进程间的通信有哪几种方式?什么是…...

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

【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南
文章目录 PyTorch 全面解析2.1 PyTorch 的发展历程2.2 PyTorch 的核心特点2.3 PyTorch 的应用场景 TensorFlow 全面解析3.1 TensorFlow 的发展历程3.2 TensorFlow 的核心特点3.3 TensorFlow 的应用场景 Keras 全面解析4.1 Keras 的发展历程4.2 Keras 的核心特点4.3 Keras 的应用…...

【第八课】Rust中的函数与方法
目录 前言 函数指针 函数当作另一个函数的参数 函数当作另一个函数的返回值 闭包 方法 关联函数 总结 前言 在前面几课中,我们都或多或少的接触到了rust中的函数,rust中的函数和其他语言的并没有什么不同,简单的语法不在这篇文章中赘…...

c语言学习25二维数组
1 二维数组 1.1二维数组认识 二维数组本质是一个数组。 举例: int a[10][3] 数组名 a; 元素个数10; 数组元素类型:int [3]; 数组元素下标:0~9 这是一个数组,有十个元素,每个元…...

如何理解Lua 使用虚拟堆栈
虚拟堆栈的基本概念 Lua使用虚拟堆栈来实现Lua和C(或其他宿主语言)之间的交互。这个虚拟堆栈是一个数据结构,用于存储Lua的值,如数字、字符串、表、函数等。它在Lua状态机(lua_State)内部维护,为…...
【倍数问题——同余系】
题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e5 10, M 1e3 10; int maxx[M][4]; void consider(int r, int x) {if(x > maxx[r][1]){maxx[r][3] maxx[r][2];maxx[r][2] maxx[r][1];maxx[r][1] x;}else if(x > maxx[r][2]){maxx[…...

「San」监听DOM变化的方法
在 San框架 中监听组件内部字体大小并调整宽度,可以结合 自定义事件 或 数据绑定 来实现动态调整。San 框架没有直接的监听 DOM 尺寸变化的内置方法,但可以通过以下步骤实现: 方法一:使用 ResizeObserver 监听字体变化 在组件的 …...

如何选择服务器
如何选择服务器 选择服务器时应考虑以下几个关键因素: 性能需求。根据网站的预期流量和负载情况,选择合适的处理器、内存和存储容量。考虑网站是否需要处理大量动态内容或高分辨率媒体文件。 可扩展性。选择一个可以轻松扩展的服务器架构,以便…...

嵌入式驱动面试总结
操作系统: 中断的处理流程,中断处理需要注意些什么 软中断和硬中断区别 linux驱动用过那些锁,信号量,互斥锁 自旋锁和互斥锁的区别 二值信号量和互斥信号量有什么区别 进程锁怎么实现的,说一下流程; …...

Uniapp 简单配置鸿蒙
Uniapp 简单配置鸿蒙 前言下载并配置鸿蒙IDEHbuilder X 配置基本的信息生成相关证书登录官网获取证书IDE配置证书添加调试设备可能出现的问题前言 如今鸿蒙的盛起,作为多端开发的代表也是开始兼容鸿蒙应用的开发,接下来我将介绍如何在uniapp中配置鸿蒙。 注意:hbuilder X的…...

线程池的实现与应用
一、线程池 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,…...