Python标准库之time和datetime
注:博客转载自:https://www.cnblogs.com/zhangxinqi/p/7687862.html
1、python3日期和时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。
每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
Python 的 time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳

- >>> import time
- >>> print(time.time())
- 1508312234.7298932
- #时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。

2、时间元组
很多Python函数用一个元组装起来的9组数字处理时间
字段 | 属性 | 值 |
4位年数 | tm_year | 2017 |
月 | tm_mon | 1到12 |
日 | tm_mday | 1到31 |
小时 | tm_hour | 0到23 |
分钟 | tm_min | 0到59 |
秒 | tm_sec | 0到61(60或61是润秒) |
一周的第几日 | tm_wday | 0到6(0是周一) |
一年的第几日 | tm_yday | 1到366,一年中的第几天 |
夏令时 | tm_isdst | 是否为夏令时,值为1时是夏令时,值为0时不是夏令时,默认为-1 |

- #从返回浮点数的时间辍方式向时间元组转换,只要将浮点数传递给如localtime之类的函数
- >>> print(time.localtime(time.time()))
- time.struct_time(tm_year=2017, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=40, tm_sec=59, tm_wday=2, tm_yday=291, tm_isdst=0)
#当前时间为:2017年,10月,18日,15时,40分,59秒,星期三,一年中的291天,不是夏令

3、获取格式化的时间
可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime()
- >>> import time
- >>> print(time.asctime(time.localtime(time.time())))
- Wed Oct 18 16:03:24 2017
- #wed为星期三,oct为october十月的缩写,18日,时间,年
4、格式化日期
可以使用 time 模块的 strftime 方法来格式化日期
python中时间日期格式化符号:
- %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 当前时区的名称
- %% %号本身

- >>> import time
- >>> print(time.strftime('%Y',time.localtime())) #获取完整年份
- 2017
- >>> print(time.strftime('%y',time.localtime())) #获取简写年份
- 17
- >>> print(time.strftime('%m',time.localtime())) #获取月
- 10
- >>> print(time.strftime('%d',time.localtime())) #获取日
- 18
- >>> print(time.strftime('%Y-%m-%d',time.localtime())) #获取年-月-日
- 2017-10-18
- >>> print(time.strftime('%H',time.localtime())) #获取时,24小时制
- 16
- >>> print(time.strftime('%l',time.localtime())) #获取时,12小时制
- 4
- >>> print(time.strftime('%M',time.localtime())) #获取分
- 33
- >>> print(time.strftime('%S',time.localtime())) #获取秒
- 31
- >>> print(time.strftime('%H:%M:%S',time.localtime())) #获取时:分:秒
- 16:34:28
- >>> print(time.strftime('%a',time.localtime())) #本地简化星期
- Wed
- >>> print(time.strftime('%A',time.localtime())) #本地完整星期
- Wednesday
- >>> print(time.strftime('%b',time.localtime())) #本地简化月份
- Oct
- >>> print(time.strftime('%B',time.localtime())) #本地完整月份
- October
- >>> print(time.strftime('%c',time.localtime())) #本地日期和时间表示
- Wed Oct 18 16:37:46 2017
- >>> print(time.strftime('%j',time.localtime())) #一年中的第几天
- 291
- >>> print(time.strftime('%p',time.localtime())) #P.M等价符
- PM
- >>> print(time.strftime('%U',time.localtime())) #一年中的第几个星期,星期天为星期的开始
- 42
- >>> print(time.strftime('%w',time.localtime())) #星期几,星期天为星期的开始
- 3
- >>> print(time.strftime('%W',time.localtime())) #一年中的第几个星期,星期一为星期的开始
- 42
- >>> print(time.strftime('%x',time.localtime())) #本地日期表示
- 10/18/17
- >>> print(time.strftime('%X',time.localtime())) #本地时间表示
- 17:16:17
- >>> print(time.strftime('%Z',time.localtime())) #当前时区
- CST
- >>> print(time.strftime('%%',time.localtime())) #输出%本身
- %
- >>> print(time.strftime('%Y-%m-%d %H:%M:%S %w-%Z',time.localtime()))
- 2017-10-18 17:25:39 3-CST #完整日期,时间,星期,时区

5、获取月日历
Calendar模块有很广泛的方法用来处理年历和月历

- >>> import calendar
- >>> cal=calendar.month(2017,10)
- >>> print(cal)
- October 2017
- Mo Tu We Th Fr Sa Su
- 1
- 2 3 4 5 6 7 8
- 9 10 11 12 13 14 15
- 16 17 18 19 20 21 22
- 23 24 25 26 27 28 29
- 30 31
- #calendar.calendar(2017)
- #返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。
- 每日宽度间隔为w字符。
- 每行长度为21* W+18+2* C。l是每星期行数。
- >>> c = calendar.calendar(2017)
- >>> print(c)
- 2017
- January February March
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 1 2 3 4 5 1 2 3 4 5
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
- 16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
- 23 24 25 26 27 28 29 27 28 27 28 29 30 31
- 30 31
- April May June
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 1 2 3 4 5 6 7 1 2 3 4
- 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
- 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
- 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
- 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
- July August September
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 1 2 3 4 5 6 1 2 3
- 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
- 10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
- 17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
- 24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
- 31
- October November December
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 1 2 3 4 5 1 2 3
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
- 16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
- 23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
- 30 31


- #calendar.firstweekday返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一。
- >>> calendar.firstweekday()
- 0
- #calendar.setfirstweekday设置每周的起始日期码。0(星期一)到6(星期日)。
- >>> calendar.setfirstweekday(1)
- >>> calendar.firstweekday()
- 1
- # calendar.isleap是闰年返回True,否则为false。
- >>> calendar.isleap(2017)
- False
- >>> print(calendar.isleap(2020))
- True
- #calendar.leapdays返回在两年之间的闰年总数,但不包括末年
- >>> print(calendar.leapdays(2016,2020))
- 1
- >>> print(calendar.leapdays(2016,2021))
- 2
- #calendar.monthcalendar返回一个整数的单层嵌套列表,每个子列表装载代表一个星期,月外的日期设为0
- >>> print(calendar.monthcalendar(2017,10))
- [[0, 0, 0, 0, 0, 0, 1], [2, 3, 4, 5, 6, 7, 8], [9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22], [23, 24, 25, 26, 27, 28, 29], [30, 31, 0, 0, 0, 0, 0]]
- >>> print(calendar.month(2017,10))
- October 2017
- Mo Tu We Th Fr Sa Su
- 1
- 2 3 4 5 6 7 8
- 9 10 11 12 13 14 15
- 16 17 18 19 20 21 22
- 23 24 25 26 27 28 29
- 30 31
- #calendar.monthrange返回两个整数,第一个为该月的首日的星期(0-6),第二个为该月的总天数
- >>> print(calendar.monthrange(2017,10))
- (6, 31)
- #calendar.timegm接受一个时间元组形式struct_time,返回该时刻的时间辍(1970纪元后经过的浮点秒数)
- >>> print(calendar.timegm((2017,10,19,14,50,0,0,0,0)))
- 1508424600
- >>> print(calendar.timegm((2017,10,19,14,50,50,0,0,0)))
- 1508424650
- >>> print(time.localtime(time.time()))
- time.struct_time(tm_year=2017, tm_mon=10, tm_mday=19, tm_hour=14, tm_min=49, tm_sec=44, tm_wday=3, tm_yday=292, tm_isdst=0)
- #calendar.weekday返回给定日期的星期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。
- >>> print(calendar.weekday(2017,10,19))
- 3
- >>> print(calendar.weekday(2017,10,20))
- 4

6、Time模块
Time 模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:

- #time.altzone
- #返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
- >>> import time
- >>> print(time.altzone)
- -28800
- #time.asctime([tupletime])
- #接受时间元组并返回一个可读的形式为"Thu Oct 19 15:07:31 2017"(2017年10月19日 周四15时07分31秒)的24个字符的字符串。
- >>> print(time.asctime(time.localtime()))
- Thu Oct 19 15:07:31 2017
- #time.clock()
- #用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
- >>> import time
- >>> def procedure():
- ... time.sleep(2.5)
- ...
- >>> t0 = time.clock()
- >>> procedure()
- >>> print(time.clock() - t0)
- 0.010000000000000009
- >>> print(time.clock() - t0)
- 0.020000000000000004
- #time.ctime()作用相当于asctime(localtime(secs)),未给参数相当于asctime()
- >>> import time
- >>> print(time.ctime())
- Thu Oct 19 19:24:24 2017
- >>> print(time.asctime(time.localtime()))
- Fri Oct 20 11:10:00 2017
- >>> print(time.asctime())
- Fri Oct 20 11:10:19 2017
- #time.gmtime()以元组方式返回格林威治时间
- >>> print(time.gmtime())
- time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=3, tm_min=27, tm_sec=30, tm_wday=4, tm_yday=293, tm_isdst=0)
- #time.localtime()以元组方式返回本地当前时间
- >>> print(time.localtime())
- time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=11, tm_min=30, tm_sec=33, tm_wday=4, tm_yday=293, tm_isdst=0)
- #time.mktime()将元组时间转换为时间戳
- >>> x = time.localtime()
- >>> x
- time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=11, tm_min=32, tm_sec=8, tm_wday=4, tm_yday=293, tm_isdst=0)
- >>> time.mktime(x)
- 1508470328.0
- #time.strftime(fmt[,tupletime])
- #接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
- >>> print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
- 2017-10-20 17:29:08


- #time.strptime()
- #根据fmt的格式把一个时间字符串解析为时间元组。
- >>> print(time.strptime('23 Oct 2017','%d %b %Y'))
- time.struct_time(tm_year=2017, tm_mon=10, tm_mday=23, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=296, tm_isdst=-1)
- >>> print(time.strptime('23 Oct 2017 14 03 00','%d %b %Y %H %M %S'))
- time.struct_time(tm_year=2017, tm_mon=10, tm_mday=23, tm_hour=14, tm_min=3, tm_sec=0, tm_wday=0, tm_yday=296, tm_isdst=-1)
- #time.time
- #返回当前时间的时间戳(1970年经过的秒数)
- >>> print(time.time())
- 1508739061.9443805
- #time.timezone
- #是当地时区距离格林威治偏移的秒数
- >>> print(time.timezone)
- -28800
- #time.tzname
- #输出一个包含一个不包含夏令时的本地时区名称
- >>> print(time.tzname)
- ('CST', 'CST')

2、datetime模块
- >>> from datetime import datetime
- >>> print(datetime.now())
- 2017-10-23 14:30:48.971017
Python标准库之time和datetime的更多相关文章
- python标准库00 学习准备
Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...
- Python标准库——走马观花
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一套很有用的标准库(standard library).标准库会随着 ...
- Python标准库概览
Python标准库通常被称为"自带的电池",自然地提供了广泛的功能,涵盖了大概200个左右的包与模块.不断有高质量的包或模块被开发出来,极大的丰富了标准库.但有些模块放在标准库中很 ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- 转--Python标准库之一句话概括
作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...
- Python 标准库一览(Python进阶学习)
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...
- python 标准库大全
python 标准库 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 string ...
- Python - 标准库概况 - 第二十一天
Python 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. 建议使用 "import os" 风格而非 "from os import *&quo ...
- Python标准库-datatime和time
Python标准库-datatime和time 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.标准库datatime 1>.datatime模块 #!/usr/bin/e ...
随机推荐
- sql 语句 名称解析,是 由内向外的。
子查询内 找不到的 字段 会 向外 寻找,还是找不到 就报错:找到了就不报错,但是 子查询语句就毫无意义了: 解决办法: 字段前面要跟上表的名称. 一般 字段无效 立刻 报错.
- 【Head First Servlets and JSP】笔记
1.谈到服务器的时候,可能是指物理主机(硬件),也可能是指Web服务应用(软件). 2.谈到客户的时候,通常指人类用户,或者是浏览器应用,或者两者都包括,浏览器应用做些什么?发送请求.解释HTML和呈 ...
- HTML5/CSS3鼠标悬停动画菜单按钮
在线演示 本地下载
- Windows Server 2008 R2 FTP无法从外部访问的解决方法
在Windows Server 2008 R2中配置好FTP服务器后,可以在本机访问,但是无法从另一台电脑访问.原因就是在于防火墙没有配置好. 1.首先检查服务器管理器中的入站规则,确保已启用FTP服 ...
- const,var,let笔记
js中定义变量的方式有三种const.var.let const 作用域:全局作用域或函数作用域 定义的变量不可修改,且必须初始化 eg: const a= 1; a= 2; console.log( ...
- Number使用笔记
Numbe函数用于将对象转换为数字 0 0 null 0 空 0 "" 0 true 1 false 0 date ...
- 关于全志A20的Ubuntu12.04 64位系统下环境配置及编译过程笔记【转】
本文转载自:https://blog.csdn.net/buqingbuyuan/article/details/43370199 在安装Ubuntu系统之后,安装编译所需的GCC等工具,一般选用GC ...
- Can't bind multiple parameters ('header' and 'parameters') to the request's content.
2019-01-23 15:46:29.012+08:00 ERROR [6]: System.InvalidOperationException: Can't bind multiple param ...
- python+senium+chrome的简单爬虫脚本
简述: 开始接触python写web自动化的脚本主要源于在公司订阅会议室,主要是使用python+selenium+chromedriver驱动chrome浏览器来完成的,其中部分python代码可以 ...
- Java解析XML的四种方法详解 - 转载
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法 在做一般的XML数据交换过程中,我更乐意传递XML字符串,而不是格式化 ...