美文网首页
python time

python time

作者: tafanfly | 来源:发表于2019-01-02 14:11 被阅读0次

time

无论在什么编程语言中,我们几乎都要用到时间。
在Python中,与时间处理相关的内置模块包含如下:

但此次本章主要讲解time模块,注意基于python2.7+版本。


一. 时间表示

  1. 在Python中,我认为主要有四种方式来表示时间,分别是时间戳24字节时间字符串时间结构化时间注意支持的时间范围是1970年之后及2038年之前
  • 时间戳(timestamp):最适于做时间运算,通常格式为浮点型1545988001.381185, 可以通过time.time()获得。

  • 24字节时间:结构为星期、月、日、时间的特定格式字符串,例如'Wed Jan 2 10:15:00 2019',可以通过time.ctime()获得。

  • 字符串时间(string_time):在保存log的文档里面常常用到,一般作为每条打印的前缀,例如2018-12-28 08:00:00,可以通过time.strftime('%Y-%m-%d %H:%M:%S')获得。

  • 结构化时间(struct_time):一个包含了年月日时分秒的九元元组,例如time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=16, tm_min=44, tm_sec=58, tm_wday=4, tm_yday=362, tm_isdst=0),可以通过time.localtime()获得。


二. 时间戳(timestamp)

主要通过time.time()方法获取。

import time
start = time.time()
end = time.time()

print end-start
6.61431217194

print start, end
1546393672.63 1546393679.24

结果为浮点型,可以加减运算。


三. 24字节时间

主要通过time.ctime()方法获取。

import time
print time.ctime()

Wed Jan  2 10:15:00 2019

四. 字符串时间(string_time)

主要通过time.strftime('%Y-%m-%d %H:%M:%S')方法获取。

import time
print time.strftime('%Y-%m-%d %H:%M:%S')

2018-12-28 17:20:32

其中的空格、短横线和冒号都是美观修饰符号,真正起控制作用的是百分符。含义如下,但注意大小写的区别:

格式 含义
%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)

主要通过time.localtime()方法获取。

import time
print time.localtime()

time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=16, tm_min=44, tm_sec=58, tm_wday=4, tm_yday=362, tm_isdst=0)

结构化时间元组共有9个元素,按顺序排列如下表:

序号 字段 取值范围
0 tm_year(4位数年) 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(夏令时) -1, 0, 1, -1是决定是否为夏令时的旗帜

六. time模块常用方法

  1. time.asctime([t])
    将一个结构化时间(struct_time)转换为24字节时间,t默认为time.localtime()。
import time

print time.asctime()
Wed Jan  2 10:36:42 2019
  1. time.ctime([s])
    将一个时间戳转换为本地时间的24字节时间,s默认为time.time()。
import time
t = time.time()

print time.ctime()
Wed Jan  2 10:33:58 2019

print time.ctime(t-3600)
Wed Jan  2 09:33:43 2019
  1. time.gmtime([s])
    将一个时间戳转换为UTC时区的结构化时间(struct_time),s默认为time.time()。
import time
print time.gmtime()

time.struct_time(tm_year=2019, tm_mon=1, tm_mday=2, tm_hour=2, tm_min=9, tm_sec=9, tm_wday=2, tm_yday=2, tm_isdst=0)
  1. time.localtime([s])
    将一个时间戳转换为当前时区的结构化时间(struct_time),s默认为time.time()。
import time
print time.localtime()

time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=16, tm_min=44, tm_sec=58, tm_wday=4, tm_yday=362, tm_isdst=0)
  1. time.mktime(t)
    将一个结构化时间(struct_time)转化为时间戳。
import time

print time.mktime(time.localtime())
1546406111.0
  1. time.strftime(format[, t])
    将一个结构化时间(struct_time)转化为字符串时间(string_time), t默认为time.localtime()
import time
print time.strftime('%Y-%m-%d %H:%M:%S')

'2018-12-28 17:20:32'
  1. time.strptime(string[, format])
    将一个字符串时间(string_time)转化为结构化时间(struct_time)。注意string和format的格式一致。
import time
string = '2019-01-01 12:00:00'
print time.strptime(string,"%Y-%m-%d %H:%M:%S")

time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=1, tm_isdst=-1)
  1. time.time()
    获得当前系统的时间戳。
  2. time.sleep(s)
    程序沉睡指定的时间, s单位为秒, 可赋值整形,亦可浮点型。
  3. time.clock()
    返回执行当前程序的CPU时间。在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间,而第二次之后的调用是自第一次调用以后到现在的运行时间。

七. 时间格式之间的转换

根据以上方法,可以总结出以下的转换关系图。


相关文章

网友评论

      本文标题:python time

      本文链接:https://www.haomeiwen.com/subject/ghickqtx.html