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的更多相关文章

  1. Python datetime模块的datetime类

    datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day. datetime.time:表示时间的类.常用的属性有hour, m ...

  2. python3 time模块与datetime模块

    time模块 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平 ...

  3. python 时间模块(time ,datetime,calendar)

    Python中提供了时间相关的内置模块,我们主要用的是:time模块.datetime模块和calendar模块 ⽇期格式化的标准: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(00 ...

  4. Python常用模块time & datetime &random 模块

    时间模块前言 在Python中,与时间处理有关的模块就包括:time,datetime 一.在Python中,通常有这几种方式来表示时间: 时间戳 格式化的时间字符串 元组(struct_time)共 ...

  5. python內建模块之datetime

    from:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193755 ...

  6. Python3之时间模块time & datetime & calendar

    一. 简介 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多python函数用一个元组装起来的9组数字处理时间. python中时间日期格式化符号: %y 两位 ...

  7. python入门之time模块和datetime模块

    time模块 时间三种表示:时间戳(秒单位),struct_time(元组,可以分开调用),指定格式(格式化) time.sleep() 等待5秒钟 time.time() 返回时间戳 time.ct ...

  8. python模块之datetime

    相比于time模块,datetime模块的接口则更直观.更容易调用 datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day: ...

  9. python中datetime模块中datetime对象的使用方法

    本文只讲述datetime模块中datetime对象的一些常用的方法,如果读者需要更多datetime模块的信息,请查阅此文档. datetime模块的对象有如下: timedelta date da ...

  10. re模块、collections模块、time模块、datetime模块

    正则表达式之re模块 re.findall用法(重要) re.findall( '正则表达式' , '待匹配的字符' ) 找出所有的目标字符,用列表的形式展现,如果找不到返回空列表. import r ...

随机推荐

  1. Excel数据导入PG库,字符串正则表达式

    1.Excel数据导入到PG库的某张表中:先将Excel文件转换为CSV格式,打开SQL Shell(psql),连接数据库(输入server,database,Port,username),然后再执 ...

  2. tshark----wireshark的命令行工具

    tshark - 转储和分析网络流 概要 tshark的 [  -2  ] [  -a  <捕捉自动停止条件>] ... [  -b  <捕捉环形缓冲区选项>] ... [   ...

  3. 定制选择范围的按钮RangeButton

    定制选择范围的按钮RangeButton 效果: 源码: RangeButton.h 与 RangeButton.m // // RangeButton.h // PulsingView // // ...

  4. 阿里云堡垒机密钥连接ECS服务器

    文:铁乐与猫 2017-6月中旬 堡垒机远程桌面windows系统就不用细说了 堡垒机远程ssh连接linux系统倒要说一下,毕竟是为安全一般只用通过密钥连接,而不使用密码的方式连接. 首先我们得在需 ...

  5. 关于第一场HBCTF的Web题小分享,当作自身的笔记

    昨天晚上6点开始的HBCTF,虽然是针对小白的,但有些题目确实不简单. 昨天女朋友又让我帮她装DOTA2(女票是一个不怎么用电脑的),然后又有一个小白问我题目,我也很热情的告诉她了,哎,真耗不起. 言 ...

  6. September 21st 2017 Week 38th Thursday

    What fire does not destroy, it hardens. 烈火摧毁不了的东西,只会变得更坚固. The true gold can stand the test of fire, ...

  7. November 13th 2016 Week 47th Sunday The 1st Day

    Adventure may hurt you, but monotony will kill you. 也许冒险会让你受伤,但一成不变会让你灭亡. Just change a bit, let the ...

  8. python3: 字符串和文本(2)

    6. 字符串忽略大小写的搜索替换 >>> text = 'UPPER PYTHON, lower python, Mixed Python' >>> re.find ...

  9. MapReduce实例2(自定义compare、partition)& shuffle机制

    MapReduce实例2(自定义compare.partition)& shuffle机制 实例:统计流量 有一份流量数据,结构是:时间戳.手机号.....上行流量.下行流量,需求是统计每个用 ...

  10. 面向对象程序设计_tesk1_寒假伊始

    大一下学期的自我目标(要求包含对大一上学期的总结.对面向对象课程完成后学习到的能力的预期,对面向对象课程的期望.对编程和专业能力的愿景规划) 在大学的第一个学期,相信很多人都是在得过且过度过,我也不例 ...