时间模块

  时间模块主要处理和时间相关的事件,我们可以通过模块获取不同数据类型的时间以便我们需求。

表现时间的三种方式:

  在pythn中表现时间的方式主要有三种:时间戳(stamptime)、元祖时间(structtime)、格式化字符串时间,在大多数编程里面也有这些概念。

  1、时间戳时间:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。返回的是float类型

  2、格式化字符串时间:列如:‘1992-12-1’

  3、元祖时间:该元祖共有9个元素(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

时间戳时间

  在使用time模块前记得导入模块,下面来看下如何获取时间戳,语法:time.time().


>>> import time
>>> time.time()
1541072964.2124543

  注意:time.time()不接受参数,返回是当前时间的时间戳时间,float型。

字符串时间

  语法:time.strftime(format,p_tuple=None),该方法接受两个参数,一个是要显示时间的字符串格式,以及元祖时间,该参数为默认参数,不传则获取当前元祖时间来转化成字符串时间,以下是该方法的详细介绍:


def strftime(format, p_tuple=None): # real signature unknown; restored from __doc__
"""
strftime(format[, tuple]) -> string Convert a time tuple to a string according to a format specification.
See the library reference manual for formatting codes. When the time tuple
is not present, current time as returned by localtime() is used. Commonly used format codes: %Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale's abbreviated weekday name.
%A Locale's full weekday name.
%b Locale's abbreviated month name.
%B Locale's full month name.
%c Locale's appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale's equivalent of either AM or PM. Other codes may be available on your platform. See documentation for
the C library strftime function.
"""
return ""

字符串格式中文对照表:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

接下来看两个例子:

>>> time.strftime("%Y-%m-%d %X")
'2018-11-01 20:08:46' >>>time.strftime("%Y-%m-%d %H-%M-%S")
'2017-07-24 13-55-04'

时间元祖

语法1:获取当前时区的时间time.localtime(secends=None),接受一个默认参数(stamptime)时间戳,没传参时默认获取当前的时间戳。

方法介绍:

def localtime(seconds=None): # real signature unknown; restored from __doc__
"""
localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,
tm_sec,tm_wday,tm_yday,tm_isdst) Convert seconds since the Epoch to a time tuple expressing local time.
When 'seconds' is not passed in, convert the current time instead.
"""
pass

语法2:获取英国伦敦时间(时间戳是伦敦时间开始time.gmtime(seconds=None)

用法与上面一样。

举例:

>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=1, tm_hour=20, tm_min=18, tm_sec=5, tm_wday=3, tm_yday=305, tm_is
dst=0)
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=1, tm_hour=12, tm_min=18, tm_sec=13, tm_wday=3, tm_yday=305, tm_i
sdst=0)

可以看出北京时间比伦敦时间早8小时。

小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

几种时间格式之间的转换

1、时间戳<--->元祖时间

时间戳--->元祖时间

语法1:time.localtime(seconds=None),接受时间戳时间参数转化成当地元祖时间。不传参默认获取当前时间戳时间。

#不传参数
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=1, tm_hour=20, tm_min=24, tm_sec=34, tm_wday=3, tm_yday=305, tm_i
sdst=0) #自定义传时间戳参数
>>> time.localtime(1231231411)
time.struct_time(tm_year=2009, tm_mon=1, tm_mday=6, tm_hour=16, tm_min=43, tm_sec=31, tm_wday=1, tm_yday=6, tm_isds
t=0)

time.gmtime()用法与time.localtime()用法相同.

元祖时间--->时间戳时间

语法:time.mktime(p_tuple),参数为元祖时间必须传参.

#先获取一个元祖时间
>>> struct_time =time.localtime()
#查看元祖时间
>>> struct_time
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=1, tm_hour=20, tm_min=30, tm_sec=6, tm_wday=3, tm_yday=305, tm_is
dst=0) #将元祖时间转化成时间戳时间
>>> stamp_time = time.mktime(struct_time)
>>> stamp_time
1541075406.0

2字符串时间<--->元祖时间

2.1字符串--->元祖时间

语法:strptime(string, format) ,接受两个参数,字符串时间以及时间字符串格式

>>> time.strptime('2007-10-10', '%Y-%m-%d')
time.struct_time(tm_year=2007, tm_mon=10, tm_mday=10, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=283, tm_isd
st=-1)

2.2、元祖时间--->字符串时间

语法:time.strftime(format,p_tuple),接受两个参数,字符串时间格式及元祖时间,元祖时间不传默认为当前时间的元祖时间

#只传字符串格式参数
>>> time.strftime('%c')
'Thu Nov 1 20:42:35 2018' #传入指定的元祖时间
#先获取一个元祖时间
>>> struct_time = time.localtime() #传入两个参数获取字符串时间
>>> time.strftime('%c',struct_time)
'Thu Nov 1 20:44:23 2018'

总结:

获取时间戳时间方法:

1、time.time()直接获取
2、time.mktime(p_tuple)元祖时间转化时间戳

获取元祖时间方法:

1、time.localtime(seconds=None)、time.gmtime(seconds=None)时间戳转化元祖时间
2、time.strptime(strtime,format)字符串时间转化成元祖时间

获取字符串时间方法:

1、time.strftime(format,p_tuple=None)元祖转化成字符串时间。

小练习题:

要求

输入出生时间和当前时间,计算出过了多长时间。

import time

def livetime(birtime, nowtime):
"""
计算你到现在活了多长时间
:param birtime: 出生时间 字符串时间格式 '%Y-%m-%d %H:%M:%S'
:param nowtime: 现在时间 字符串时间格式 '%Y-%m-%d %H:%M:%S'
:return:返回拼接的字符串 '活了%s年%s月%s天%s时%s分%s秒'
"""
# 1、将出生时间以及现在时间转化成元组时间
bir_struct_time = time.strptime(birtime, '%Y-%m-%d %H:%M:%S')
now_struct_time = time.strptime(nowtime, '%Y-%m-%d %H:%M:%S') # 2、转化成时间戳时间
bir_stamptime = time.mktime(bir_struct_time)
now_stamptime = time.mktime(now_struct_time) # 3、计算两者的时间戳差值
live_stamptime = now_stamptime - bir_stamptime # 4、将差值转化成伦敦元祖时间(伦敦时间1970-1-1 0:0:0)方便计算不会出现借位减的情况
live_struct_time = time.gmtime(live_stamptime) # 5、返回拼接好的字符串
return '活了%s年%s月%s天%s时%s分%s秒' % (live_struct_time.tm_year - 1970,
live_struct_time.tm_mon - 1,
live_struct_time.tm_mday - 1,
live_struct_time.tm_hour,
live_struct_time.tm_min,
live_struct_time.tm_sec
) print(livetime('2000-10-10 0:0:0', '2010-10-10 0:0:0'))

python时间模块time的更多相关文章

  1. 浅谈Python时间模块

    浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...

  2. python时间模块-time和datetime

    时间模块 python 中时间表示方法有:时间戳,即从1975年1月1日00:00:00到现在的秒数:格式化后的时间字符串:时间struct_time 元组. struct_time元组中元素主要包括 ...

  3. python 时间模块 -- time

    time 时间模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该先导入模块. # 常用方法 import time print("现在执行我") time.sleep( ...

  4. python 时间模块小结

    python有两个重要的时间模块,分别是time和datetime time模块 表示时间的几种方法 时间元组 time.struct_time( tm_year=2016, tm_mon=7, tm ...

  5. Python时间模块。

    python中时间的表示方式 unix时间戳,字符串时间,格式化时间 时间模块有,time,datetime,calendar #time模块 import time #获取本地时间戳,返回浮点数 p ...

  6. Python时间模块datetime用法

    时间模块datetime是python内置模块,datetime是Python处理日期和时间的标准库. 1,导入时间模块 from datetime import datetime 2,实例 from ...

  7. python时间模块time,datetime

    时间模块time.datetime 模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默 ...

  8. python——时间模块

    格式化时间字符串 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(0000-9999) %m 月份(01-12) %d 月内的一天(0-31) %H 24小时制的小时数(0-23) %I ...

  9. Python—时间模块(time)和随机模块(random)

    时间模块 time模块 获取秒级时间戳.毫秒级时间戳.微秒级时间戳 import time t = time.time() print t # 原始时间数据 1574502460.90 print i ...

随机推荐

  1. ODPS-Java-SDK快速入门

    一.简介 核心接口包括:AliyunAccount,MaxCompute(SDK中使用原名ODPS)等常见对象组件 更多参见文档:https://help.aliyun.com/document_de ...

  2. c# 设置IE浏览器版本运行程序-设置webBrowser对应的IE内核版本来运行

    //通常情况下,我们直接调用C#的webBrowser控件,默认的浏览器内核是IE7.  那么如何修改控件调用的默认浏览器版本呢?using System; using System.Collecti ...

  3. [LOJ#2386]. 「USACO 2018.01 Platinum」Cow at Large[点分治]

    题意 题目链接 分析 假设当前的根为 rt ,我们能够在奶牛到达 \(u\) 之时拦住它,当且仅当到叶子节点到 \(u\) 的最短距离 \(mn_u \le dis_u\) .容易发现,合法的区域是许 ...

  4. 基于HTTP可供浏览器调用的本地打印程序

    之前给公司做打印都是用ActiveX控件,只支持IE浏览器,最近需要支持谷歌,又不想去学谷歌插件编写,于是就用本地启动一个http服务器来供浏览器调用(写成windows服务更好),同事用了都说好(笑 ...

  5. Python全栈开发之路 【第七篇】:面向对象编程设计与开发(1)

    本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.“功夫的 ...

  6. Python Revisited Day 01

    逻辑操作符 身份操作符 is a = ['AAA', 3, None] b = ['AAA', 3, None] a is b #False b = a a is b #True 身份比较速度快,原因 ...

  7. Python—闭包

    闭包的定义:即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个这样的内部函数在包含它们的外部函数之外被调用时 ...

  8. 如何优化Docker储存

    大家在使用Docker的过程中,有没有想过,Docker在本地存储镜像时把文件存储在哪里了呢?有没有对文件的总大小做一定的限制呢?能不能调整本地存储的位置及总限制大小呢?今天,我们就从这些问题入手,来 ...

  9. 线程锁(互斥锁Mutex)及递归锁

    一.线程锁(互斥锁) 在一个程序内,主进程可以启动很多个线程,这些线程都可以访问主进程的内存空间,在Python中虽然有了GIL,同一时间只有一个线程在运行,可是这些线程的调度都归系统,操作系统有自身 ...

  10. MyBatis使用注解开发