Python中的日期和时间(二)time和calendar模块

 time模块

time 模块既有时间处理的,也有转换时间格式的。time模块有许多UNIX和C的痕迹,它们很像的与UNIX和C的函数,可以和C进行通用。理解上如果对C不是很了解,可能会存在一些困难,在写C接口时,可能会用到它们,其他场景建议不要直接使用,以免出现问题难以解决。

重要属性

time.timezone

本地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。

time.tzname

返回一个元组,即(所在标准时间区的名字,夏令时区名字)

time.altzone

返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。

>>> import time
>>> print ("time.altzone %d " % time.altzone)
time.altzone -28800 

time.daylight

本地时间是否是夏令时间

>>> import time
>>> time.daylight
0

常用方法

time.time( )

返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

>>> import time
>>> time.time()
1694098216.907698

time.localtime([secs])

不带参数是获取当前时间的时间元组:

>>> time.localtime()
time.struct_time(tm_year=2023, tm_mon=9, tm_mday=7, tm_hour=22, tm_min=48, tm_sec=2, tm_wday=3, tm_yday=250, tm_isdst=0)

接收时间戳(如time.time()返回的值)并返回当地时间下的时间元组

>>> import time
>>> time.localtime(1694098216.907698)
time.struct_time(tm_year=2023, tm_mon=9, tm_mday=7, tm_hour=22, tm_min=50, tm_sec=16, tm_wday=3, tm_yday=250, tm_isdst=0)

time.gmtime([secs])

接收时间戳并返回格林威治天文时间下的时间元组

>>> import time
>>> time.gmtime(time.time())
time.struct_time(tm_year=2023, tm_mon=9, tm_mday=7, tm_hour=14, tm_min=53, tm_sec=45, tm_wday=3, tm_yday=250, tm_isdst=0)

time.mktime(tupletime)

接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)。

>>> time.mktime(time.localtime())
1694098540.0

time.asctime([tupletime])

将时间元组转化为字符串

>>> import time
>>> t = time.localtime()
>>> print ("time.asctime(t): %s " % time.asctime(t))
time.asctime(t): Thu Sep  7 22:59:41 2023 

如果不带参数,直接将当前时间转化为字符串:

>>> time.asctime()
'Thu Sep  7 23:01:00 2023'

time.ctime([secs])

将时间戳转化为字符串,相当于是time.asctime(time.localtime([secs])
如果未给定时间戳,就是当前时间

>>> import time
>>> time.time()
1694099035.372949
>>> time.ctime()
'Thu Sep  7 23:04:05 2023'
>>> time.ctime(1694099035.372949)
'Thu Sep  7 23:03:55 2023'

time.sleep(secs)
推迟调用线程的运行,secs指秒数。

import timeprint ("Start : %s" % time.ctime())
time.sleep( 5 )
print ("End : %s" % time.ctime())

time.strftime(fmt[,tupletime])

接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。

>>> import time
>>> print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
2016-04-07 11:18:05

time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')

根据fmt的格式把一个时间字符串解析为时间元组。

>>> import time
>>> struct_time = time.strptime("30 Nov 00", "%d %b %y")
>>> print ("返回元组: ", struct_time)
返回元组:  time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

time.tzset()

根据环境变量TZ重新初始化时间相关设置。

time.perf_counter()

返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

import timescale = 50 print("执行开始".center(scale//2,"-"))  # .center() 控制输出的样式,宽度为 25//2,即 22,汉字居中,两侧填充 -start = time.perf_counter() # 调用一次 perf_counter(),从计算机系统里随机选一个时间点A,计算其距离当前时间点B1有多少秒。当第二次调用该函数时,默认从第一次调用的时间点A算起,距离当前时间点B2有多少秒。两个函数取差,即实现从时间点B1到B2的计时功能。
for i in range(scale+1):   a = '*' * i             # i 个长度的 * 符号b = '.' * (scale-i)  # scale-i) 个长度的 . 符号。符号 * 和 . 总长度为50 c = (i/scale)*100  # 显示当前进度,百分之多少dur = time.perf_counter() - start    # 计时,计算进度条走到某一百分比的用时print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')  # \r用来在每次输出完成后,将光标移至行首,这样保证进度条始终在同一行输出,即在一行不断刷新的效果;{:^3.0f},输出格式为居中,占3位,小数点后0位,浮点型数,对应输出的数为c;{},对应输出的数为a;{},对应输出的数为b;{:.2f},输出有两位小数的浮点数,对应输出的数为dur;end='',用来保证不换行,不加这句默认换行。time.sleep(0.1)     # 在输出下一个百分之几的进度前,停止0.1秒
print("\n"+"执行结果".center(scale//2,'-'))

time.perf_counter_ns()

与time.perf_counter()用法一样,但时间上精确到纳秒

>>> time.perf_counter_ns()
78724518597220
>>> time.perf_counter()
78727.953504732

time.process_time()

返回当前进程执行 CPU 的时间总和(以秒为单位时间的浮点值),不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

# Python program to show time by process_time()  
from time import process_time # assigning n = 50  
n = 50 # Start the stopwatch / counter  
t1_start = process_time()  for i in range(n):print(i, end =' ') print()  # Stop the stopwatch / counter 
t1_stop = process_time() print("Elapsed time:", t1_stop, t1_start)  print("Elapsed time during the whole program in seconds:", t1_stop-t1_start) 

time.process_time_ns()

与time.process_time()用法一致,但是时间采用纳秒

>>> time.process_time_ns()
146499000
>>> time.process_time()
0.147873

日历模块

此模块的函数都是日历相关的,例如打印某月的字符月历。

星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。

函数及描述
calendar.calendar(year,w=2,l=1,c=6)
返回一个多行字符串格式的 year 年年历,3 个月一行,间隔距离为 c。 每日宽度间隔为w字符。每行长度为 21* W+18+2* C。l 是每星期行数。
calendar.firstweekday( )
返回当前每周起始日期的设置。默认情况下,首次载入 calendar 模块时返回 0,即星期一。
calendar.isleap(year)

是闰年返回 True,否则为 False。

>>> import calendar
>>> print(calendar.isleap(2000))
True
>>> print(calendar.isleap(1900))
False
calendar.leapdays(y1,y2)
返回在Y1,Y2两年之间的闰年总数。
calendar.month(year,month,w=2,l=1)
返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
calendar.monthcalendar(year,month)
返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。
calendar.monthrange(year,month)

返回两个整数。第一个是该月的星期几,第二个是该月有几天。星期几是从0(星期一)到 6(星期日)。

>>> import calendar
>>> calendar.monthrange(2014, 11)
(5, 30)

(5, 30)解释:5 表示 2014 年 11 月份的第一天是周六,30 表示 2014 年 11 月份总共有 30 天。

calendar.prcal(year, w=0, l=0, c=6, m=3)
相当于 print (calendar.calendar(year, w=0, l=0, c=6, m=3))。
calendar.prmonth(theyear, themonth, w=0, l=0)
相当于 print(calendar.month(theyear, themonth, w=0, l=0))。
calendar.setfirstweekday(weekday)
设置每周的起始日期码。0(星期一)到6(星期日)。
calendar.timegm(tupletime)
和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳(1970纪元后经过的浮点秒数)。
calendar.weekday(year,month,day)
返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。
#!/usr/bin/pythonimport time
import calendar# (1)当前时间戳
time.time()
# 1538271871.226226# (2)时间戳 → 时间元组,默认为当前时间
# time.struct_time(tm_year=2018, tm_mon=9, tm_mday=3, tm_hour=9, tm_min=4, tm_sec=1, tm_wday=6, tm_yday=246, tm_isdst=0)
time.localtime()
time.localtime(1538271871.226226)# (3)时间戳 → 可视化时间
# time.ctime(时间戳),默认为当前时间
time.ctime(1538271871.226226)# (4)时间元组 → 时间戳
# 1538271871
time.mktime((2018, 9, 30, 9, 44, 31, 6, 273, 0))# (5)时间元组 → 可视化时间
# time.asctime(时间元组),默认为当前时间
time.asctime()
time.asctime((2018, 9, 30, 9, 44, 31, 6, 273, 0))
time.asctime(time.localtime(1538271871.226226))# (6)时间元组 → 可视化时间(定制)
# time.strftime(要转换成的格式,时间元组)
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())# (7)可视化时间(定制) → 时间元祖
# time.strptime(时间字符串,时间格式)
print(time.strptime('2018-9-30 11:32:23', '%Y-%m-%d %H:%M:%S'))# (8)浮点数秒数,用于衡量不同程序的耗时,前后两次调用的时间差
time.clock()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/72830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos7 Yum安装PHP7.2

1、安装源 安装php72w&#xff0c;是需要配置额外的yum源地址的&#xff0c;否则会报错不能找到相关软件包。 php高版本的yum源地址&#xff0c;有两部分&#xff0c;其中一部分是epel-release&#xff0c;另外一部分来自webtatic。如果跳过epel-release的话&#xff0c;安装…

基于YOLOv8和WiderFace数据集的人脸目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8和WiderFace数据集的人脸目标检测系统可用于日常生活中检测与定位人脸目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算…

【KRouter】一个简单且轻量级的Kotlin Routing框架

【KRouter】一个简单且轻量级的Kotlin Routing框架 KRouter&#xff08;Kotlin-Router&#xff09;是一个简单而轻量级的Kotlin路由框架。 具体来说&#xff0c;KRouter是一个通过URI来发现接口实现类的框架。它的使用方式如下&#xff1a; val homeScreen KRouter.route&l…

4. Java 的线程安全机制之`volatile`

前言&#xff1a;在多线程编程过程中&#xff0c;线程安全是一个非常重要的概念&#xff0c;它有助于保证多线程程序的正确性和健壮性。其中&#xff0c;volatile是实现线程安全的一种方式&#xff0c;保证内存的立马可见&#xff0c;下面将会详细介绍。 文章目录 是什么为什么…

OpenCV(三十二):轮廓检测

1.轮廓概念介绍 在计算机视觉和图像处理领域中&#xff0c;轮廓是指在图像中表示对象边界的连续曲线。它是由一系列相邻的点构成的&#xff0c;这些点在边界上连接起来形成一个封闭的路径。 轮廓层级&#xff1a; 轮廓层级&#xff08;Contour Hierarchy&#xff09;是指在包含…

雅思 《九分达人》阅读练习(二)

目录 雅思阅读练习 《九分达人》test3 paragraph3 1.单词含义要记准确&#xff0c;敏感度要上来。 2.找准定位&#xff0c;之后理解句子大致含义。 说说关于判断题的做题方法 关于“承认”有哪些单词 同替词汇 think 可以用什么其他单词来替换 单词 一些疑问 I have…

win10 sourcetree打开一闪就退出

参考文档: 解决方案参考文档一: Solved: cant install Sourcetree on Windows 10Solved: when I double-click the installation file or run as administrator,I can see a splash screen and disappear in 10 seconds,then I open thehttps://community.atlassian.com/t5…

【C++】vector的模拟实现【完整版】

目录 一、vector的默认成员函数 1、vector类的大体结构 2、无参构造函数 3、拷贝构造函数 4、Swap(operator需要用) 5、赋值重载operator 6、析构函数 二、vector的三种遍历方式 1、size和capacity(大小和容量) 2、 operator[]遍历 3、迭代器iterator遍历和范围for 三…

multiple JSON fields named delFlag

错误原因 如果A是父类&#xff0c;A类有一个字段a&#xff0c;如果B类继承了A类&#xff0c;并且&#xff0c;B类也定义一个a 继承又涉及到覆盖和的问题&#xff0c;就是子类和父类可以同时有用一个方法或者变量&#xff0c;但是在类的继承使用过程没有问题&#xff0c;但是G…

LA@二次型分类@正定二次型@主子式

文章目录 abstract引言正定二次型小结可逆线性变换不改变二次型的正定性二次型是正定的充要条件推论:正定矩阵和特征值正定二次型(正定矩阵)性质 负定二次型负定二次型判定条件 k阶顺序主子式赫尔维茨定理:主子式判定二次型正定性和负定性 二次型分类小结有定二次型不定二次型 …

php常用算法

许多人都说 算法是程序的核心&#xff0c;一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper&#xff0c;虽然很少接触到算法方面的东西 。但是对于冒泡排序&#xff0c;插入排序&#xff0c;选择排序&#xff0c;快速排序四种基本算法&#xff0c;我想还是要掌握…

微信h5扫码接口范例:多个扫码框支持的办法,通过引入一个参数来区分及使用localStorage保证之前扫到的数据不丢失

测试方法&#xff1a; 多个扫码框支持的办法&#xff0c;通过引入一个参数来区分及使用localStorage保证之前扫到的数据不丢失 测试效果&#xff1a; 页面打开后尝试点击不同的扫码按钮去扫描看看&#xff0c;会发现扫的值不会错乱&#xff0c;都会显示到对应的输入框中。 &l…

Oracle数据库环境变量配置以及可能遇到的问题解决

一、如何配置Oracle数据库环境变量&#xff08;以win10为例&#xff09; 1、找到此电脑&#xff0c;鼠标右键&#xff0c;点击属性。 2、点击属性成功后&#xff0c;进入如下页面&#xff0c;找到“高级系统设置”&#xff0c;点击进入。 3、找到环境变量&#xff0c;点击进入…

Capstone 反汇编引擎

文章目录 前言一、Capstone简介二、示例代码 前言 介绍了capstone反汇编引擎的用法 一、Capstone简介 Capstone 是一个轻量级的多平台、多架构的反汇编框架&#xff0c;用纯 C 语言实现。可以说它是如今世界上最优秀的反汇编引擎&#xff0c;IDA&#xff0c;Radare2&#xf…

Unity Inspector面板上显示Api

serializeField】——将私有类型和保护类型可视化到面板上【System.serializeField】——将自定义类型可视化到面板上【HideIninspector】——将公共变量隐藏【Header&#xff08;“分组说明”&#xff09;】——将可视化变量进行分组【Tooltip&#xff08;“内容说明”&#x…

STM32F4X RTC

STM32F4X RTC 什么是RTCSTM32F4X RTCSTM32F4X RTC框图STM32F4X RTC计数频率STM32F4X RTC日历STM32F4X RTC闹钟 STM32F4X RTC例程 什么是RTC RTC全程叫Real-Time Clock实时时钟&#xff0c;是MCU中一个用来计时的模块。RTC的一个主要作用是用来显示实时时间&#xff0c;就像日常…

pip安装skimage的方法

在安装skimage时&#xff0c;可能会报错误&#xff1a; 可以尝试&#xff1a;pip install scikit-image进行安装&#xff0c;使用时只需要&#xff1a;import skimage

介绍一些开发用到的工具

Sourcetree &#xff1a;Git 界面操作工具&#xff0c;真心好用 uTool&#xff1a;效率工具平台&#xff0c;可以了解一下&#xff0c;提供了很多强大的工具&#xff0c;加强了对电脑的操作 MobaXterm&#xff1a;带有 X11 服务器、选项卡式 SSH 客户端、网络工具等的增强型 Wi…

《消息队列》专栏介绍

《消息队列》专栏介绍 目录 《消息队列》专栏介绍专栏导言什么是消息队列呢&#xff1f;应用场景&#xff08;作用&#xff09; 为什么要用消息队列呢&#xff1f;异步处理削峰填谷 举个例子 分布式消息队列的优势 应用解耦优点发布订阅优点 分布式消息队列应用场景不同消息队列…

武警三维数字沙盘电子沙盘虚拟现实模拟推演大数据人工智能开发教程第15课

部队三维数字沙盘电子沙盘虚拟现实模拟推演大数据人工智能开发教程第15课 现在不管什么GIS平台首先要解决的就是数据来源问题&#xff0c;因为没有数据的GIS就是一个空壳&#xff0c;下面我就目前一些主流的数据获取 方式了解做如下之我见&#xff08;主要针对互联网上的一些…