python中的time模块

Python023

python中的time模块,第1张

time模块是python专门用来处理时间的内建库。

下面我们来记录一些基本使用方法。

ps: 用到了一些概念,比如unix时间戳,感兴趣的同学自行百度。

下文参考他人博客内容, 传送门

time.time()函数获取的是Unix时间戳。

返回的是一个float类型的数值。

在python中的time模块中定义了一个叫struct_time的元组,是用来构建时间对象的。

struct_time元组共9个元素组成,如下图:

这个函数可以接受一个unix时间戳,然后转换为struct_time。

如果不传入second参数,则会返回当前时间的时间戳的struct_time对象

再试试传入当前时间的时间戳,是否能得到上面的struct_time呢?

和我们预期的结果一致。

和localtime函数类似,默认情况gmtime函数获取当前时间的utc时间。

返回当前时间的utc时间的struct_time对象。

也可以传入任意的unix时间戳,来得到utc时间。

将一个时间戳struct_time对象转换为时间戳。

传入一个struct_time对象,返回"Sun Jun 20 23:21:05 1993"这种格式的字符串。不传参数,返回当前时间的这种格式的字符串。

传入格式和struct_time,返回按照format格式格式化后的时间字符串。

格式占位符可以参考下图:

将字符串时间转为struct_time,time.strftime()的逆向操作。

python中的时间模块主要有time, datetime。

I, time模块

time模块中包含了四种时间格式:

float格式,即给定时间相对于epoch增加的秒数

tuple格式,一个九元组 (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)

string格式,'Mon Feb 6 15:00:06 2012'

format格式,以指定的格式生成的时间

针对这几种时间格式,time模块提供了函数在格式之间相互转换。

asctime(tuple) ->string

ctime(float) ->string

gmtime(float) ->tuple

localtime(float) ->tuple

mktime(tuple) ->float

strftime(format, tuple) ->format string

strptime(formatstring, format) ->tuple

time() ->float

上述函数中,除了time()函数直接返回当前时间相对于epoch的秒数外,其他函数都要求有时间的输入,如果没有输入,则默认使用当前时间。

另外,strftime和strptime中的format使用下面的格式:

%a 英文星期简写

%A 英文星期的完全

%b 英文月份的简写

%B 英文月份的完全

%c 显示本地日期时间

%d 日期,取1-31

%H 小时, 0-23

%I 小时, 0-12

%m 月, 01 -12

%M 分钟,1-59

%j 年中当天的天数

%w 显示今天是星期几

%W 第几周

%x 当天日期

%X 本地的当天时间

%y 年份 00-99间

%Y 年份的完整拼写

%S 秒(00-59)

除了上述的时间转换函数之外,模块还提供了下面的函数:

clock() 返回进程的创建时间,以秒计数的float

sleep(float) sleep一段时间,以秒计数

tzset() 更改时区

II, datetime

datetime模块定义了下面这几个类:

datetime.date:表示日期的类。常用的属性有year, month, day;datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;datetime.datetime:表示日期时间。datetime.timedelta:表示时间间隔,即两个时间点之间的长度。datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)

注 :上面这些类型的对象都是不可变(immutable)的。

下面详细介绍这些类的使用方式。

date类

date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下:

class datetime.date(year, month, day):参数的意义就不多作解释了,只是有几点要注意一下:

year的范围是[MINYEAR, MAXYEAR],即[1, 9999];month的范围是[1, 12]。(月份是从1开始的,不是从0开始的~_~);day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天;

date类定义了一些常用的类方法与类属性,方便我们操作:

date.max、date.min:date对象所能表示的最大、最小日期;date.resolution:date对象表示日期的最小单位。这里是天。date.today():返回一个表示当前本地日期的date对象;date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)