time模块 - - -时间获取和转换


在我们学习time模块之前需要对以下的概念进行了解;

时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.

UTC(Coordinated Universal Time,世界协调时):协调世界时,又称世界统一时间、世界标准时间、国际协调时间,在我国为UTC+8。

DST(Daylight Saving Time):夏令时

  1986年4月,中国中央有关部门发出“在全国范围内实行夏时制的通知”,具体作法是:每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时,夏令时开始;到九月中旬第一个星期日的凌晨2时整(北京夏令时),再将时钟拨回一小时,即将表针由2时拨至1时,夏令时结束。

结构化时间:

  • time.localtime()
  • time.gmtime()世界标准时间(格林尼治时间)

结构化时间转成时间戳:time.mktime(time.localtime())

结构化时间转成字符串时间:time.strftime('%Y-%m-%d %X',time.localtime())

字符串时间转成结构化时间:time.strptime('2017:05:07:19:47:36','%Y-%m-%d %X')

时间元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

 
索引值 属性
0 tm_year(年) (例如:2018)
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(60代表闰秒,61是基于历史原因保留)
6 tm_wday(星期几) 0-6(0表示星期一)
7 tm_yday(一年中的第几天) 1-366
8 tm_isdst(是否为夏令时) 0,1,-1(-1代表夏令时)

time.time()-->float


说明:

  返回当前时间的时间戳(1970元年后的浮点秒数)

实例

In [1]: import time

In [2]: time.time()
Out[2]: 1533177066.8094957

time.sleep(secs)


说明:

  推迟调用线程的运行,secs的单位是秒

实例:

import time 

start_time = time.time()
time.sleep(5)
end_time = time.time()
print(start_time-end_time) # -5.000396013259888

time.gmtime([secs])


说明

  和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。

In [14]: time.gmtime()
Out[14]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=2, tm_hour=3, tm_min=18, tm_sec=52, tm_wday=3, tm_yday=214, tm_isdst=0)

默认调用time.time()

In [32]: time.gmtime()
Out[32]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=4, tm_min=37, tm_sec=24, tm_wday=4, tm_yday=215, tm_isdst=0) In [33]: time.gmtime(33)
Out[33]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=33, tm_wday=3, tm_yday=1, tm_isdst=0) In [34]: time.gmtime(time.time())
Out[34]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=4, tm_min=37, tm_sec=44, tm_wday=4, tm_yday=215, tm_isdst=0)

time.localtime([secs])


说明:

  将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。

实例:

In [16]: time.localtime()
Out[16]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=2, tm_hour=11, tm_min=20, tm_sec=6, tm_wday=3, tm_yday=214, tm_isdst=0)

默认调用time.time()

In [29]: time.localtime()
Out[29]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=55, tm_wday=3, tm_yday=1, tm_isdst=0) In [30]: time.time()# 当前时间戳
Out[30]: 1533270573.173084 In [31]: time.localtime(time.time())
Out[31]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=29, tm_sec=43, tm_wday=4, tm_yday=215, tm_isdst=0)

time.mktime(t)


说明:

  将一个struct_time转化为时间戳。

In [26]: import time

In [27]: time.localtime()
Out[27]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=22, tm_sec=6, tm_wday=4, tm_yday=215, tm_isdst=0) In [28]: time.mktime(time.localtime())
Out[28]: 1533270142.0

time.asctime (t)


说明:

  把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。

实例:

当没有参数的时候默认将time.localtime()传入

In [38]: time.asctime()
Out[38]: 'Fri Aug 3 12:55:58 2018' In [39]: time.localtime()
Out[39]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=56, tm_sec=4, tm_wday=4, tm_yday=215, tm_isdst=0) In [40]: time.asctime(time.localtime())
Out[40]: 'Fri Aug 3 12:56:18 2018'

当传入的参数为时间元组的时候

In [46]: time.asctime((2018, 8, 3, 12, 57, 19, 134860,0,0)) # 关于时间元组的获取
Out[46]: 'Sat Aug 3 12:57:19 2018'

time.ctime([secs])


说明:

  把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。

实例

In [51]: time.ctime()
Out[51]: 'Fri Aug 3 13:13:55 2018' In [52]: time.ctime(int(time.time()))
Out[52]: 'Fri Aug 3 13:14:01 2018' In [53]: time.ctime(time.time())
Out[53]: 'Fri Aug 3 13:14:06 2018'

time.struct_time()


说明:

  接收一个时间元组,返回一个struct_time()的对象

实例:

In [59]: time.struct_time((2018, 8, 3, 12, 57, 19, 134860,0,0))
Out[59]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=57, tm_sec=19, tm_wday=134860, tm_yday=0, tm_isdst=0)

 time.strftime(format [, t])--->返回字符串表示当地的时间


说明:

  返回字符串表示的当地时间。 
  把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串,格式由参数format决定。如果未指定,将传入time.localtime()。如果元组中任何一个元素越界,就会抛出ValueError的异常。函数返回的是一个可读表示的本地时间的字符串。

参数:

  • format:格式化字符串
  • t :可选的参数是一个struct_time对象

时间字符串支持的格式符号:(区分大小写)

 %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 时区的名字(如果是本地时间,返回空字符串)
%% ‘%’字符

实例:

通过函数将struct_time转成格式字符串

In [64]: time.localtime()
Out[64]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=17, tm_min=6, tm_sec=14, tm_wday=4, tm_yday=215, tm_isdst=0) In [65]: time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
Out[65]: '2018-08-03 17:06:18' In [66]: time.strftime("%Y-%m-%d",time.localtime())
Out[66]: '2018-08-03'

如果不传入struct_time参数则默认返回当前的时间格式化字符串

In [67]: time.strftime("%Y-%m-%d")
Out[67]: '2018-08-03'

手动拼接显示字符串时间

In [6]: str(time.localtime().tm_year)+"年"+str(time.localtime().tm_mon)+"月"+str(time.localtime().tm_mday)+"日"
Out[6]: '2018年8月3日'

获取当前的时分秒

In [10]: time.strftime("%H-%M-%S")
Out[10]: '17-24-28'

获取当前的年月日

In [11]: time.strftime("%y-%m-%d")
Out[11]: '18-08-03'

获取当前格式化时间。需要注意的是在python框架中对于时间的字段返回的是datetime.datetime()的时间类型

In [12]: import time

In [13]: from datetime import datetime

In [15]: datetime.now()
Out[15]: datetime.datetime(2018, 8, 3, 22, 45, 34, 453989) In [16]: datetime_obj = datetime.now() In [17]: datetime_obj.strftime("%Y-%m-%d %H:%M:%S %f")
Out[17]: '2018-08-03 22:46:06 462418'

星期的简写

In [18]: datetime_obj.strftime('%a')
Out[18]: 'Fri'

星期的全写

In [19]: datetime_obj.strftime('%A')
Out[19]: 'Friday'

月份的简写

In [20]: datetime_obj.strftime('%b')
Out[20]: 'Aug'

月份的全写

In [21]: datetime_obj.strftime('%B')
Out[21]: 'August'

得到日期时间的字符串

In [22]: datetime_obj.strftime('%c')
Out[22]: 'Fri Aug 3 22:46:06 2018'

日期字符串

In [24]: datetime_obj.strftime('%x')
Out[24]: '08/03/18'

时间字符串

In [25]: datetime_obj.strftime('%X')
Out[25]: '22:46:06'

今天在这周是星期几

In [26]: datetime_obj.strftime('%w')
Out[26]: ''

今天是今年的第几天

In [27]: datetime_obj.strftime('%j')
Out[27]: ''

这周是第几天

In [28]: datetime_obj.strftime('%U')
Out[28]: ''

time.strptime(string[,format])


说明:

  将格式字符串转化成struct_time. 
  该函数是time.strftime()函数的逆操作。time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。所以函数返回的是struct_time对象。

参数:

  • string :时间字符串
  • format:格式化字符串

创建一个时间字符串的对象

In [12]: import time

In [13]: from datetime import datetime

In [16]: datetime_obj = datetime.now()

In [30]: str_time = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")

In [31]: str_time
Out[31]: '2018-08-03 22:46:06'

将字符串的时间转换成strcut_time对象

In [30]: str_time = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")

In [31]: str_time
Out[31]: '2018-08-03 22:46:06' In [32]: struct_obj = time.strptime(str_time,"%Y-%m-%d %H:%M:%S") In [33]: struct_obj
Out[33]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=22, tm_min=46, tm_sec=6, tm_wday=4, tm_yday=215, tm_isdst=-1)

对struct_time()使用for循环进行遍历

In [35]: for t in struct_obj:
....: print(t)
....:
2018
8
3
22
46
6
4
215
-1

注意:注意在使用strptime()函数将一个指定格式的时间字符串转化成元组时,参数format的格式必须和string的格式保持一致,如果string中日期间使用“-”分隔,format中也必须使用“-”分隔,时间中使用冒号“:”分隔,后面也必须使用冒号分隔,否则会报格式不匹配的错误。

time.altzone

time.clock

time.clock_getres

time.daylight

time.get_clock_info

time.monotonic

time.perf_counter

time.process_time

time.timezone

time.tzname

time.tzset

Python标准库--time模块的详解的更多相关文章

  1. python标准库之字符编码详解

    codesc官方地址:https://docs.python.org/2/library/codecs.html 相关帮助:http://www.cnblogs.com/huxi/archive/20 ...

  2. python标准库介绍——1 os详解

    == os 模块 == ``os`` 模块为许多操作系统函数提供了统一的接口. 这个模块中的大部分函数通过对应平台相关模块实现, 比如 ``posix`` 和 ``nt. os`` 模块会在第一次导入 ...

  3. [python标准库]Pickle模块

    Pickle-------python对象序列化 本文主要阐述以下几点: 1.pickle模块简介 2.pickle模块提供的方法 3.注意事项 4.实例解析 1.pickle模块简介 The pic ...

  4. Python 标准库 ConfigParser 模块 的使用

    Python 标准库 ConfigParser 模块 的使用 demo #!/usr/bin/env python # coding=utf-8 import ConfigParser import ...

  5. Python标准库——collections模块的Counter类

    1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类 ...

  6. [python标准库]XML模块

    1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...

  7. 【python】Python标准库defaultdict模块

    来源:http://www.ynpxrz.com/n1031711c2023.aspx Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会 ...

  8. Python标准库--os模块

    这个模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行.一个例 ...

  9. python标准库 bisect模块

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #bisect #作用:维护有序列表,而不必在每次向列表增加一个元素 ...

随机推荐

  1. [C++ Primer Plus] 第9章、内存模型和名称空间(一)程序清单

    程序清单9.9(静态存储连续性.无链接性) #include<iostream> using namespace std; ; void strcount(const char *str) ...

  2. js之数组操作

    js之数组操作 前言 本文主要从应用来讲数组api的一些操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等.(文章摘自:https://segmentfault ...

  3. 你不知道的JS(3)来聊聊this

    为什么要使用this?什么是this? 来看一段代码 function identify() { return this.name.toUpperCase(); } function speak() ...

  4. wordpress安装教程

    最近安装了wordpress来搭建自己的网站,过程有些艰辛,以防以后转移服务器再次遇到这个难题,在此记下自己的这次安装过程以及一些问题,同时也供遇到相同问题的初次接触者做参考. 另外说明一下我用的操作 ...

  5. MAVEN项目中include引入静态文件时报错找不到文件

    1. 出现的问题 Fragment "/common/jsp/resource.jsp" was not found at expected path /src/main/weba ...

  6. AutoCAD2015有时候会显示乱七八糟的线

    问题描述:AutoCAD2015以上版本有时候打开一张图,会出现乱七八糟的线 解决方案: 这是由于硬件加速平滑线显示引起的,可以如下修改

  7. #!/usr/bin/python3 和 #!/usr/bin/env python3的区别

    脚本语言的第一行指出用什么程序去执行代码. #!/usr/bin/python3调用/usr/bin下的python3解释器.#!/usr/bin/env python3首先会到env设置里查找pyt ...

  8. 一梦江湖费六年——QQ群聊天分析

    本文结构: 一.那些年我们加过的QQ群 二.数据读入和整理(一)--来自蓝翔的挖掘机 二.数据读入和整理(二)--你不知道的事 三.聊天宏观(1)--寤寐思服 三.聊天宏观(2)日月篇 三.聊天宏观( ...

  9. English Voice of <<Way Back Into Love>>

    I have been living with a shadow overhead我一直生活在阴影中I have been sleeping with a cloud above my bed睡梦中床 ...

  10. 批处理脚本+adb命令

    app的测试过程中,有一些重复性的繁琐工作,可以采用用批处理脚本+adb命令方式来代替 说明: (1)等待时间我用的ping命令替代的,比较简单直观 (2)我采取的是用坐标定位,后续会使用控件来定位 ...