python小专题——time模块

简介: time常用函数         最近参与python的一个项目,发现经常遇到一些常用的模块,而每次使用时,我都要查一遍。

                                                                            time常用函数   

     最近参与python的一个项目,发现经常遇到一些常用的模块,而每次使用时,我都要查一遍。终于,我决定要各个击破,对常用的python小知识进行总结。下面总结了python中对时间处理的常见函数。

在开始之前,首先要说明这几点:

  1. 在Python中,通常有这几种方式来表示时间:1)、时间戳 2)、格式化的时间字符串 3)、元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
  2. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
  3. 时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日08:00:00开始按秒计算的偏移量。运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
  4. 元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。

     time的函数较多,但常用的也就那几个。使用time函数前,照例先导入time模块。介绍常用函数前要先了解最基础的函数:

    (1)、time函数——返回当前时间的时间戳,浮点数格式

>>> from time import *   #导入python模块的所有函数
>>> time()
1370485361.442

    (2)、localtime函数——localtime([secs]),将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。

#默认以当前时间为准
>>> localtime()
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=39, tm_sec=49, tm_wday=3, tm_yday=157, tm_isdst=0)
#等同于localtime()
>>> localtime(time())
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=40, tm_sec=37, tm_wday=3, tm_yday=157, tm_isdst=0)
#指定一个时间戳参数
>>> localtime(1370485361.442)
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=22, tm_sec=41, tm_wday=3, tm_yday=157, tm_isdst=0)
#默认从1970年1月1日开始
>>> localtime(345)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=5, tm_sec=45, tm_wday=3, tm_yday=1, tm_isdst=0)
>>> localtime(1)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)

   localtime()输出参数说明:

索引(Index) 属性(Attribute) 值(Values)
0  tm_year(年)  比如2013 
1  tm_mon(月)  1 - 12
2  tm_mday(日)  1 - 31
3  tm_hour(时)  0 - 23
4  tm_min(分)  0 - 59
5  tm_sec(秒)  0 - 61
6  tm_wday(weekday)  0 - 6(0表示周日)
7  tm_yday(一年中的第几天)  1 - 366
8  tm_isdst(是否是夏令时)  默认为-1

   

 

 

 

 

 

   

   

 

   (3)、gmtime()函数——和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。

>>> gmtime()
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=4, tm_min=2, tm_sec=47, tm_wday=3, tm_yday=157, tm_isdst=0)
>>> gmtime(time())
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=4, tm_min=2, tm_sec=53, tm_wday=3, tm_yday=157, tm_isdst=0)

    (4)、asctime()函数——asctime([tuple]), 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。

>>> asctime()#默认是当前时间的struct time
'Thu Jun 06 10:55:40 2013'
>>> asctime(localtime())
'Thu Jun 06 10:56:02 2013'

    (5)、ctime函数——ctime([secs]),把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。

>>> ctime() #等同于ctime(time())
'Thu Jun 06 11:05:34 2013'
>>> ctime(time())
'Thu Jun 06 11:05:44 2013'
#默认从1970年1月1日08:00:00开始
>>> ctime(238)
'Thu Jan 01 08:03:58 1970'
>>> ctime(1)
'Thu Jan 01 08:00:01 1970'

 以上是基础的时间函数,下面是常用的时间处理函数。

 

       实际存储中,更多的是存储时间戳(这样易于时间的计算,有更好的存储性能)而不是更易于我们阅读的时间格式,所以,我们有将时间戳转换为普通时间格式的冲动——strftime函数。

     (6)、strftime函数——strftime(format[, tuple]): 把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。 如果tuple未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。

>>> strftime('%Y-%m-%d %H:%M:%S', localtime(time()))
'2013-06-06 11:10:57'  #这是我们比较喜爱的时间格式
>>> strftime('%Y-%m-%d', localtime())
'2013-06-06'
>>> strftime('%Y-%m-%d %X', localtime())  ==>  %X给出默认本地相应时间
'2013-06-06 11:12:39'

 Format参数说明:

格式 含义
%a 本地(locale)简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,01 - 12)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(01 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%’字符

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(7)、mktime()函数——mktime(tuple),将一个struct_time或者9个参数的时间元组转化为时间戳。

>>> mktime(localtime())
1370490962.0
>>> mktime(2013, 6, 6, 13, 3, 38, 1, 48, 0) #这样写是错的

Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    mktime(2013, 6, 6, 13, 3, 38, 1, 48, 0)
TypeError: mktime() takes exactly one argument (9 given)
>>> mktime((2013, 6, 6, 13, 3, 38, 1, 48, 0))#注意这里9个参数的元组作为一个参数
1370495018.0
>>> 

    (8)、strptime()函数——strptime(string[, format]):把一个格式化时间字符串转化为struct_time。它是strftime()的逆操作。

>>> strptime('2013-06-06 11:12:39','%Y-%m-%d %X')
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=11, tm_min=12, tm_sec=39, tm_wday=3, tm_yday=157, tm_isdst=-1)

 

   其他常用的时间函数:

  (9)、sleep()函数——sllep(secs),可以通过调用time.sleep来挂起当前的进程。time.sleep接收一个浮点型参数,表示进程挂起的时间。

     (10)、clock()函数——这个函数在不同的系统上含义不同。 在Linux系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。在windows操作系统上,time.clock() 返回第一次调用该方法到现在的秒数,其精确度高于1微秒。可以使用该函数来记录程序执行的时间。

总结一下该函数有两个功能:
  在第一次调用的时候,返回的是程序运行的实际时间;
  以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔

>>> clock()
1.655286571487689e-06   #第一次调用是程序运行时间
>>> clock()
8.366160976619078  #第二次调用是与第一次的时间间隔
>>> clock()    #第三次调用是与第一次的时间间隔
12.056175791433892
>>> sleep(1)

 

 总结一下:

(1)、常见应用

    1)、获取当前时间:

   time.time() 获取当前时间戳
   time.localtime() 当前时间的struct_time形式
   time.ctime() 当前时间的字符串形式

    2)、将时间戳转换为字符串:

  time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    3)、将字符串转换为时间戳:

  time.mktime(time.strptime('2013-06-06 09:00','%Y-%m-%d %H:%M'))

(2)、在Python中共有三种表达方式以及这三种方式之间的转换:

   1)、timestamp

   2)、tuple或者struct_time

   3)、格式化字符串。

 

当然time模块还有其它函数,目前还没用到,用到再进行补充。

 

作者: zhoujie
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,不然我担心博客园找你算账
如果您觉得本文对你有帮助,请竖起您的大拇指右下角点推荐,也可以关注我
目录
相关文章
|
18天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
20天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
2天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
2天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
33 1
|
4天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
25 0
|
5天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
6天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
11天前
|
索引 Python
「Python系列」Python operator模块、math模块
Python的`operator`模块提供了一系列内置的操作符函数,这些函数对应于Python语言中的内建操作符。使用`operator`模块可以使代码更加清晰和易读,同时也能提高性能,因为它通常比使用Python内建操作符更快。
27 0
|
16天前
|
数据采集 网络协议 API
python中其他网络相关的模块和库简介
【4月更文挑战第4天】Python网络编程有多个流行模块和库,如requests提供简洁的HTTP客户端API,支持多种HTTP方法和自动处理复杂功能;Scrapy是高效的网络爬虫框架,适用于数据挖掘和自动化测试;aiohttp基于asyncio的异步HTTP库,用于构建高性能Web应用;Twisted是事件驱动的网络引擎,支持多种协议和异步编程;Flask和Django分别是轻量级和全栈Web框架,方便构建不同规模的Web应用。这些工具使网络编程更简单和高效。
|
20天前
|
数据采集 数据挖掘 Python
Python中collections模块的Counter计数器:深入解析与应用
在Python的`collections`模块中,`Counter`是一个强大且实用的工具,它主要用于计数可哈希对象。无论是统计单词出现的频率,还是分析数据集中元素的分布情况,`Counter`都能提供快速且直观的结果。本文将深入解析`Counter`计数器的原理、用法以及它在实际应用中的价值。