Python语言中与时间有关的模块主要是:time,datetime,calendar

time模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可能会在不同的平台有不同的效果。

另外一点是,由于是基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 - 2038 之间,如果你写的代码需要处理在前面所述范围之外的日期,那可能需要考虑使用datetime模块更好。

名词解释:UTC时间

UTC时间(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时

Python中时间有3种表现方式,分别是:

1.时间戳

时间戳表示的是从1970年1月1日 00:00:00开始到现在时间的偏移量,以秒计算的值(float类型)。返回时间戳方式的方法主要有time(),clock()等。

time()方法返回的值:从纪元开始(1970年1月1日 00:00:00)以秒为单位的当前UTC时间(float类型)

>>> time.time() #返回当前UTC时间的时间戳

1510885126.5995045

clock()方法返回的值:

首先关于这个方法的注释是这样写的:

Return the CPU time or real time since the start of the process or since
the first call to clock().  This has as much precision as the system
records.

clock翻译过来的意思就是 计时器

precision翻译过来的意思就是 精确

这两个单词很好的表达了这个方法所实现的功能。

clock()方法,在不同的系统上含义不同。 在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。

而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次 之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为 精确)

>>> time.clock()
3.5378305527754105e-06
>>> time.clock()
5.703646194302607
>>> time.clock()
17.30329184519444

第一个clock()输出的是程序运行时间
第二、三个clock()输出的都是与第一个clock的时间间隔

2.struct_time(元组格式的时间对象)

struct_time元组共有9个元素,返回struct_time时间对象的方法主要有 gmtime()、localtime()、strptime()。

下图表示struct_time元组包含的9个元素分别表示什么含义:

tm_wday(weekday)的值是:0~6(0表示周日)

gmtime([secs])方法将一个时间戳转换为 UTC时间的struct_time时间对象格式。没有参数时,默认当前时间

>>> time.gmtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=2, tm_min=29, tm_sec=35, tm_wday=4, tm_yday=321, tm_isdst=0)

localtime([secs])方法将一个时间戳转换为 当前时区的struct_time时间对象格式。没有参数时,以当前时间为准
>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=10, tm_min=29, tm_sec=42, tm_wday=4, tm_yday=321, tm_isdst=0)

 strptime()方法将一个时间字符串转换为struct_time时间对象格式。和strftime()是逆操作

>>> time.strptime("2017/11/17","%Y/%m/%d")
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=321, tm_isdst=-1)

3.格式化的字符串

strftime(format[,t])方法将一个struct_time时间对象格式的时间 转换为格式化的时间字符串。如果t未指定,将传入time.localtime()。

>>> time.strftime("%Y-%m-%d %H:%M:%S") #未指定t参数
'2017-11-17 11:30:13'

>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) #指定 t参数为UTC时间
'2017-11-17 03:33:15'

如果struct_time元组中的任何一个元素越界,将会抛出ValueError的错误。

格式对照表:

其它方法:

time.sleep([secs]):线程推迟指定的时间运行。单位为秒

time.asctime([t]) 将一个表示时间的struct_time表示为"'Fri Nov 17 11:42:02 2017'"这种 形式。如果没有参数,会把time.localtime()作为参数传入

>>> time.asctime()
'Fri Nov 17 11:42:02 2017'
>>> time.asctime(time.localtime())
'Fri Nov 17 11:42:31 2017'

time.ctime([secs])把一个时间戳转换为time.asctime()的形式。如果没有参数,会把time.time()作为参数传入。它的作用相当于

time.asctime(time.localtime())

>>> time.ctime()
'Fri Nov 17 11:40:07 2017'
>>> time.ctime(time.time())
'Fri Nov 17 11:40:54 2017'

晕,为什么使用 time.ctime(time.time())方法会得到当前时区的时间。明明time.time()方法返回的时间戳表示 UTC时间的。

>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(time.time()))
'2017-11-17 03:46:59'

>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(time.time()+28800))
'2017-11-17 11:54:19'

28800表示8个小时(中国时间为 UTC时间+8小时)

暂且先把这个问题记在这里。

关于时间模块,这些只是最基础的应用。如何合理使用这些方法才是最应该学习的。

												

python 模块学习——time模块的更多相关文章

  1. python基础学习笔记——模块

    自定义模块 我们今天来学习一下自定义模块(也就是私人订制),我们要自定义模块,首先就要知道什么是模块啊 一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组 ...

  2. python开发学习-day06(模块拾忆、面向对象)

    s12-20160130-day06 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  3. Python语言学习:模块

    一.模块 1. 模块(Module):以.py结尾的文件,包含python对象定义和python语句.使代码段更容易理解和使用. 模块分为两种:标准库(直接导入的库)和第三方库(需要下载安装的库). ...

  4. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块

    正则表达式   语法:             mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...

  5. day5模块学习 -- os模块学习

    python基础之模块之os模块 os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/ ...

  6. day5模块学习--random模块

    Python中的random模块用于生成随机数 下面具体介绍random模块的功能:   1.random.random() #用于生成一个0到1的浮点数   随机浮点数:0<= n < ...

  7. Python:模块学习——os模块

    os模块提供了多个访问操作系统服务的功能 os模块中一些重要的函数和变量 os.name 显示当前使用平台 os.getcwd() 显示当前Python脚本工作路径 os.listdir('dirna ...

  8. Python:模块学习——sys模块

    sys模块常见函数和变量 sys.argv:命令行参数,实现从程序外部向程序传递参数 [注]:(1) sys.argv[0] 表示代码本身的文件路径 (2)sys.argv是一个元组,可以用[ ]提取 ...

  9. day5模块学习--hashlib模块

    hashlib模块     Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

随机推荐

  1. @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 这个开源的第三方类库。主要是以下两个jar包:jackson-core-asl-1.6.4.jar;jackson-mapper-asl-1.6.4.jar

    @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConvert ...

  2. 大话USB驱动之总线驱动程序

    转载注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/25040009 总线驱动是不用改的.内核都帮我们做好了.为了了解整个USB驱动的体 ...

  3. [LeetCode] 035. Search Insert Position (Medium) (C++)

    索引:[LeetCode] Leetcode 题解索引 (C++/Java/Python/Sql) Github: https://github.com/illuz/leetcode 035. Sea ...

  4. 【Android】资源系列(一) -- 国际化(多语言)

    1.Android 中要实现国际化比較简单.     字符串国际化:仅仅要在 res 目录下新建相应语言的 values 目录就好了.     如.英语环境下的.目录命名为:values-en     ...

  5. python 数据描述字符串转整数

    q3 = int(float(q3.replace('万', '')) * 10000)

  6. football statistics

    https://www.whoscored.com/Players/24328/Show/Edinson-Cavani

  7. WebSocket握手总结

    网址:http://blog.csdn.net/edwingu/article/details/44040961 WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器 ...

  8. codeforces 764D

    脑洞 很早以前没有补掉的题目 四色问题肯定使有解的,然后就是怎么构造.注意到边长是奇数,那么我们就可以分类,按左上角坐标的奇偶性分类,正好对应四种颜色.因为当两个矩形左上角横纵坐标奇偶性不同时,那么肯 ...

  9. Magnetic Storms

    http://acm.timus.ru/problem.aspx?space=1&num=1126 简单的线段树求区间最值 #include <stdio.h> #include ...

  10. (function(){})();和(function(){}())每个括号的用途和区别

    (function(){…})(); 这种写法是因为JS中没有块级作用域的概念,所以可以用lambda函数来模仿块级作用域,这个的作用是定义并立即调用一个lambda函数,这个函数中定义的任何变量,都 ...