17-[模块]-time&datetime
1.表示时间time方式
在Python中,用三种方式来表示时间,分别是时间戳、格式化时间字符串和结构化时间
1.时间戳(timestamp):也就是1970年1月1日之后的秒,
例如1506388236.216345,可以通过time.time()获得。时间戳是一个浮点数,可以进行加减运算,但请注意不要让结果超出取值范围。 2.格式化的时间字符串(string_time):也就是年月日时分秒这样的我们常见的时间字符串,
例如2017-09-26 09:12:48,可以通过time.localtime()获得; 3,结构化时间(struct_time):一个包含了年月日时分秒的多元元组,
例如time.struct_time(tm_year=2017, tm_mon=9, tm_mday=26, tm_hour=9, tm_min=14, tm_sec=50, tm_wday=1, tm_yday=269, tm_isdst=0),可以通过time.strftime('%Y-%m-%d')获得。
由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。time模块目前只支持到2038年前。如果需要处理范围之外的日期,请使用datetime模块。
UTC(Coordinated Universal Time,世界协调时),亦即格林威治天文时间,世界标准时间。我们中国为东八区,比UTC早8个小时,也就是UTC+8。关于UTC的缩写,有个故事,你可能已经注意到了,按英文的缩写,应该是CUT,而不是UTC。但是世界协调时在法文中的缩写是TUC,两国互相不让,作为妥协,最后干脆简称UTC。
DST(Daylight Saving Time)即夏令时。
2.time模块的方法
- time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
- time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
- time.time():返回当前时间的时间戳。
- time.mktime(t):将一个struct_time转化为时间戳。
- time.sleep(secs):线程推迟指定的时间运行。单位为秒。
- time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Sun Oct 1 12:04:38 2017'。如果没有参数,将会将time.localtime()作为参数传入。
- time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。
- 举例:time.strftime("%Y-%m-%d %X", time.localtime()) #输出'2017-10-01 12:14:23'
time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
- 举例:time.strptime('2017-10-3 17:54',"%Y-%m-%d %H:%M") #输出 time.struct_time(tm_year=2017, tm_mon=10, tm_mday=3, tm_hour=17, tm_min=54, tm_sec=0, tm_wday=1, tm_yday=276, tm_isdst=-1)
# time.time() 方法 :当前时间戳
In [22]: import time In [23]: time.time()
Out[23]: 1518865113.717425 In [24]: time.time()/3600/24/365
Out[24]: 48.1628973505411 In [25]: time.time()/3600/24/365 + 1970
Out[25]: 2018.1628977987789
3.结构化时间
结构化时间元组共有9个元素,按顺序排列如下表: 索引 属性 取值范围
0 tm_year(年) 比如2017
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
既然结构化时间是一个元组,那么就可以通过索引进行取值,也可以进行分片,或者通过属性名获取对应的值。
# time.localtime() 该时区 当前时间的 时间戳转换为结构化时间
In [26]: time.localtime()
Out[26]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=17, tm_hour=18, tm_min=59, tm_sec=17, tm_w
day=5, tm_yday=48, tm_isdst=0) In [27]: a = time.localtime() In [28]: a.tm_year
Out[28]: 2018 In [29]: a.tm_mon
Out[29]: 2 In [30]: "%s-%s-%s"%(a.tm_year,a.tm_mon,a.tm_mday) # 格式化输出
Out[30]: '2018-2-17'
# 0时区 当前时间 结构化时间
In [31]: time.gmtime()
Out[31]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=17, tm_hour=11, tm_min=2, tm_sec=29, tm_wday=5, tm_yday=48, tm_isdst=0)
# 结构化转换为时间戳
In [33]: time.mktime(a)
Out[33]: 1518865175.0 In [34]: a
Out[34]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=17, tm_hour=18, tm_min=59, tm_sec=35, tm_wday=5, tm_yday=48, tm_isdst=0)
# 表示为这种形式:'Sun Oct 1 12:04:38 2017'
In [44]: time.asctime()
Out[44]: 'Sat Feb 17 19:08:53 2018' # 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式
In [45]: time.ctime()
Out[45]: 'Sat Feb 17 19:09:32 2018'
In [46]: time.ctime(123232)
Out[46]: 'Fri Jan 2 18:13:52 1970' In [47]: time.ctime(0)
Out[47]: 'Thu Jan 1 08:00:00 1970' In [48]: time.ctime(+100)
Out[48]: 'Thu Jan 1 08:01:40 1970' In [49]: time.ctime(+1000000)
Out[49]: 'Mon Jan 12 21:46:40 1970' In [50]: time.ctime(+10000000000)
Out[50]: 'Sun Nov 21 01:46:40 2286'
4.格式化时间
格式 含义
%a 本地星期名称的简写(如星期四为Thu)
%A 本地星期名称的全称(如星期四为Thursday)
%b 本地月份名称的简写(如八月份为agu)
%B 本地月份名称的全称(如八月份为august)
%c 本地相应的日期和时间的字符串表示(如:15/08/27 10:20:06)
%d 一个月中的第几天(01 - 31)
%f 微秒(范围0.999999)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,0 - 11)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的标识符
%S 秒(00 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之 前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期字符串(如15/08/01)
%X 本地相应时间字符串(如08:08:10)
%y 去掉世纪的年份(00 - 99)两个数字表示的年份
%Y 完整的年份(4个数字表示年份)
%z 与UTC时间的间隔(如果是本地时间,返回空字符串)
%Z 时区的名字(如果是本地时间,返回空字符串)
%% ‘%’字符
# strftime() 格式化时间
In [56]: a
Out[56]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=17, tm_hour=18, tm_min=59, tm_sec=35, tm_wday=5, tm_yday=48, tm_isdst=0) In [55]: time.strftime('%Y-%m-%d')
Out[55]: '2018-02-17' In [57]: time.strftime('%Y-%m-%d %H:%M:%S',a)
Out[57]: '2018-02-17 18:59:35' In [58]: time.strftime('%Y-%m-%d %H:%M:%S %A',a)
Out[58]: '2018-02-17 18:59:35 Saturday' In [59]: time.strftime('%Y-%m-%d %H:%M:%S %a',a)
Out[59]: '2018-02-17 18:59:35 Sat' In [60]: time.strftime('%Y-%m-%d %H:%M:%S %p',a)
Out[60]: '2018-02-17 18:59:35 PM' In [61]: time.strftime('%Y-%m-%d %H:%M:%S %U',a)
Out[61]: '2018-02-17 18:59:35 06' In [64]: time.strftime('%Y-%m-%d %H:%M:%S %U')
Out[64]: '2018-02-17 19:14:29 06' In [65]: time.strftime('%Y-%m-%d %H:%M:%S %w')
Out[65]: '2018-02-17 19:14:33 6' In [66]: time.strftime('%Y-%m-%d %H:%M:%S %W')
Out[66]: '2018-02-17 19:14:36 07' In [67]: time.strftime('%Y-%m-%d %H:%M:%S %z')
Out[67]: '2018-02-17 19:14:39 Öйú±ê׼ʱ¼ä' In [68]: time.strftime('%Y-%m-%d %H:%M:%S %Z')
Out[68]: '2018-02-17 19:14:44 Öйú±ê׼ʱ¼ä'
5.转换关系
6.datetime模块
相比于time模块,datetime模块的接口则更直观、更容易调用
datetime模块定义了下面这几个类:
datetime.date:表示日期的类。常用的属性有year, month, day;
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
datetime.datetime:表示日期时间。
datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)
我们需要记住的方法仅以下几个:
1.d=datetime.datetime.now() 返回当前的datetime日期类型
d.timestamp(),d.today(), d.year,d.timetuple()等方法可以调用
In [5]: datetime.datetime.now()
Out[5]: datetime.datetime(2018, 2, 17, 19, 22, 27, 966803) In [9]: d.timestamp()
Out[9]: 1518866577.650586 In [10]: d.today()
Out[10]: datetime.datetime(2018, 2, 17, 19, 23, 17, 125420) In [11]: d.year
Out[11]: 2018 In [12]: d.timetuple()
Out[12]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=17, tm_hour=19, tm_min=22, tm_sec=57, tm_wday=5, tm_yday=48, tm_isdst=-1)
2.datetime.date.fromtimestamp(322222) 把一个时间戳转为datetime日期类型
In [13]: datetime.date.fromtimestamp(3232323)
Out[13]: datetime.date(1970, 2, 7)
3.时间运算
>>> datetime.datetime.now()
datetime.datetime(2017, 10, 1, 12, 53, 11, 821218) >>> datetime.datetime.now() + datetime.timedelta(4) #当前时间 +4天
datetime.datetime(2017, 10, 5, 12, 53, 35, 276589) >>> datetime.datetime.now() + datetime.timedelta(hours=4) #当前时间+4小时
datetime.datetime(2017, 10, 1, 16, 53, 42, 876275)
In [21]: datetime.datetime.now() + datetime.timedelta(years=4)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-764417f227f6> in <module>()
----> 1 datetime.datetime.now() + datetime.timedelta(years=4) TypeError: 'years' is an invalid keyword argument for this function
4.时间替换
>>> d.replace(year=2999,month=11,day=30) datetime.date(2999, 11, 30)
17-[模块]-time&datetime的更多相关文章
- Python datetime模块的datetime类
datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day. datetime.time:表示时间的类.常用的属性有hour, m ...
- python3 time模块与datetime模块
time模块 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平 ...
- python 时间模块(time ,datetime,calendar)
Python中提供了时间相关的内置模块,我们主要用的是:time模块.datetime模块和calendar模块 ⽇期格式化的标准: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(00 ...
- Python常用模块time & datetime &random 模块
时间模块前言 在Python中,与时间处理有关的模块就包括:time,datetime 一.在Python中,通常有这几种方式来表示时间: 时间戳 格式化的时间字符串 元组(struct_time)共 ...
- python內建模块之datetime
from:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193755 ...
- Python3之时间模块time & datetime & calendar
一. 简介 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多python函数用一个元组装起来的9组数字处理时间. python中时间日期格式化符号: %y 两位 ...
- python入门之time模块和datetime模块
time模块 时间三种表示:时间戳(秒单位),struct_time(元组,可以分开调用),指定格式(格式化) time.sleep() 等待5秒钟 time.time() 返回时间戳 time.ct ...
- python模块之datetime
相比于time模块,datetime模块的接口则更直观.更容易调用 datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day: ...
- python中datetime模块中datetime对象的使用方法
本文只讲述datetime模块中datetime对象的一些常用的方法,如果读者需要更多datetime模块的信息,请查阅此文档. datetime模块的对象有如下: timedelta date da ...
- re模块、collections模块、time模块、datetime模块
正则表达式之re模块 re.findall用法(重要) re.findall( '正则表达式' , '待匹配的字符' ) 找出所有的目标字符,用列表的形式展现,如果找不到返回空列表. import r ...
随机推荐
- 简单解析Spring核心IOC容器原理
将大体流程解析了一边,具体可以看源代码一个方法一个方法的跟下 XmlBeanFactory的功能是建立在DefaultListableBeanFactory这个基本容器的基础上的,并在这个基本容器的基 ...
- python 下字符串格式时间比较
python 下有多个有关时间的模块,分别是time.datetime.calendar,今天重点讨论下time写法. 其中time模块,主要有以下方法: ltime=time.time() 获取当前 ...
- 铁乐学python_day04-作业
1,写代码,有如下列表,按照要求实现每一个功能 li = ['alex', 'wusir', 'eric', 'rain', 'alex'] 计算列表的长度并输出 print(len(li)) 答:结 ...
- 使用MVC Razor生成格式良好的HTML Body作为邮件内容
PS: 实例化邮件类MailMessage有一个属性IsBodyHtml指示邮件正文是否是HTML格式. 我想利用Razor View的Model Binding / Rendering功能为我从AS ...
- zabbix 监控iptables
参看的文章链接忘了...... yum -y install iptstate 1.脚本位置和内容 [root@web1 scripts]# pwd /etc/zabbix/scripts [root ...
- 【Alpha】Daily Scrum Meeting——blog2
团队成员 吴吉键 201421122007(组长) 魏修祺 201421122008 孙劲林 201421122022 1. 会议当天照片 忘记拍了!(没有拍照片的习惯,没有第四人拍照) 2. 每个人 ...
- python处理数据(二)
处理PDF文件 PyPDF2简介 作为 PDF 工具包构建的纯 python 库. 它可以:提取文档信息(标题,作者,... ...)一页一页地分割文件一页一页地合并文件裁剪页面将多个页面合并成一个页 ...
- MySQL 导出远程服务器数据库 为 sql文件
MySQL 导出远程服务器sql文件 mysqldump -h192.168.1.111 –P3306 -uroot -ppassword --default-character-set=utf8 t ...
- Java并发编程--1.Thread和Runnable
创建线程 Java有两种方式创建线程, 继承Thread类和实现Runnable接口 继承Thread 步骤: 1.自定义一个类继承Thread类, 重写run方法 2.创建自定义类的对象,调用sta ...
- Kubernetes 1.6新特性
Kubernetes 1.6已结发布,包括9个Stable特性.12个Beta特性.8个Alpha特性,共29个新特性.Kubernetes 1.6重点关注集群规模扩展和自动化.目前最多支持5000个 ...