Python之time模块详解

2023-12-15 21:43:01

python3中time模块的用法及说明

python中,导入time模块使用的命令是

import?time

可以使用以下命令查看time模块内置的能够使用的方法:

dir(time)

可以使用以下命令查看time模块中每个内置方法的说明:

help(time.time_method)

比如time模块下有一个time.time的方法,现在我想查看这个方法的官方文档,就可以使用这样的命令:

help(time.time)

时间的表示形式:

在python中,通常有三种方式来表示时间:时间戳,元组(结构化时间,struct_time),格式化的时间字符串。

(1)时间戳(timestamp):通常来说,时间戳表示从1970年1月1日00:00:00开始按秒计算的偏移量,它的值是float类型

(2)格式化的时间字符串(Format String):‘2017-06-20’

(3)结构化时间(struct_time):struct_time元组共有9个元素:(年,月,日,时,分,秒,一年中的第几周,一年中的第几天等)

time模块中内置的常用的方法:

asctime

接受时间元组并返回一个可读的形式"Tue May 30 17:17:30 2017"(2017年5月30日周二17时17分30秒)的24个字符的字符串

Convert?a?time?tuple?to?a?string,?e.g.?'Sat?Jun?06?16:26:11?1998'.
When?the?time?tuple?is?not?present,?current?time?as?returned?by?localtime()
is?used.
>>>?time.asctime()
'Thu?Jun?22?19:27:19?2017'

ctime

作用相当于asctime(localtime(secs)),未给参数相当于asctime()

ctime(seconds)?->?string
Convert?a?time?in?seconds?since?the?Epoch?to?a?string?in?local?time.
This?is?equivalent?to?asctime(localtime(seconds)).?When?the?time?tuple?is
not?present,?current?time?as?returned?by?localtime()?is?used.
>>>?time.ctime()
'Thu?Jun?22?19:34:35?2017'

gmtime

接收时间辍(1970纪元年后经过的浮点秒数)并返回格林威治天文时间下的时间元组t(t.tm_isdst始终为0)

gmtime([seconds])?->?(tm_year,?tm_mon,?tm_mday,?tm_hour,?tm_min,
???????????????????????tm_sec,?tm_wday,?tm_yday,?tm_isdst)
Convert?seconds?since?the?Epoch?to?a?time?tuple?expressing?UTC?(a.k.a.
GMT).??When?'seconds'?is?not?passed?in,?convert?the?current?time?instead.
If?the?platform?supports?the?tm_gmtoff?and?tm_zone,?they?are?available?as
attributes?only.
>>>?time.gmtime()
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=22,?tm_hour=11,?tm_min=35,?tm_sec=12,?tm_wday=3,?
tm_yday=173,?tm_isdst=0)

localtime

接收时间辍(1970纪元年后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取为0或1,取决于当地当时是不是夏令时)

localtime([seconds])?->?(tm_year,tm_mon,tm_mday,tm_hour,tm_min,
??????????????????????????tm_sec,tm_wday,tm_yday,tm_isdst)
Convert?seconds?since?the?Epoch?to?a?time?tuple?expressing?local?time.
When?'seconds'?is?not?passed?in,?convert?the?current?time?instead.
>>>?time.localtime()
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=22,?tm_hour=19,?tm_min=35,?tm_sec=35,?
tm_wday=3,?tm_yday=173,?tm_isdst=0)

mktime

接受时间元组并返回时间辍(1970纪元年后经过的浮点秒数)

mktime(tuple)?->?floating?point?number
Convert?a?time?tuple?in?local?time?to?seconds?since?the?Epoch.
Note?that?mktime(gmtime(0))?will?not?generally?return?zero?for?most
time?zones;?instead?the?returned?value?will?either?be?equal?to?that
of?the?timezone?or?altzone?attributes?on?the?time?module.
>>>?time.mktime(time.localtime())
1498131370.0

sleep

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

Delay?execution?for?a?given?number?of?seconds.??The?argument?may?be
a?floating?point?number?for?subsecond?precision.

strftime

把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串.如果t未指定,将传入time.localtime(),如果元组中任命一个元素越界,将会抛出ValueError异常

strftime(format[,?tuple])?->?string
Convert?a?time?tuple?to?a?string?according?to?a?format?specification.
See?the?library?reference?manual?for?formatting?codes.?When?the?time?tuple
is?not?present,?current?time?as?returned?by?localtime()?is?used.
????Commonly?used?format?codes:
????
????%Y??Year?with?century?as?a?decimal?number.===>完整的年份
????%m??Month?as?a?decimal?number?[01,12].===>月份(01-12)
????%d??Day?of?the?month?as?a?decimal?number?[01,31].===>一个月中的第几天(01-31)
????%H??Hour?(24-hour?clock)?as?a?decimal?number?[00,23].===>一天中的第几个小时(24小时制,00-23)
????%M??Minute?as?a?decimal?number?[00,59].===>分钟数(00-59)
????%S??Second?as?a?decimal?number?[00,61].===>秒(01-61)
????%z??Time?zone?offset?from?UTC.===>用+HHMM或者-HHMM表示距离格林威治的时区偏移(H代表十进制的小时数,M代表十进制的分钟数)
????%a??Locale's?abbreviated?weekday?name.===>本地(local)简化星期名称
????%A??Locale's?full?weekday?name.===>本地完整星期名称
????%b??Locale's?abbreviated?month?name.===>本地简化月份名称
????%B??Locale's?full?month?name.===>本地完整月份名称
????%c??Locale's?appropriate?date?and?time?representation.===>本地相应的日期和时间表示
????%I??Hour?(12-hour?clock)?as?a?decimal?number?[01,12].===>一天中的第几个小时(12小时制,01-12)
????%p??Locale's?equivalent?of?either?AM?or?PM.===>本地am或者pm的相应符
>>>?time.strftime("%Y-%m-%d")
'2017-06-22'
>>>?time.strftime("%Y-%m-%d?%H-%H-%S")
'2017-06-22?19-19-28'

strptim

把一个格式化时间字符串转化为struct_time,实际上它和strftie()是逆操作

strptime(string,?format)?->?struct_time
Parse?a?string?to?a?time?tuple?according?to?a?format?specification.
See?the?library?reference?manual?for?formatting?codes?(same?as
strftime()).
>>>?time.strptime("2017-06-21","%Y-%m-%d")
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=21,?tm_hour=0,?tm_min=0,?tm_sec=0,?tm_wday=2,?tm_yday=172,?tm_isdst=-1)
>>>?time.strptime("2017-06-21?12-34-45","%Y-%m-%d?%H-%M-%S")
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=21,?tm_hour=12,?tm_min=34,?tm_sec=45,?tm_wday=2,?tm_yday=172,?tm_isdst=-1)
struct_time

把一个时间转换成结构化时间

The?time?value?as?returned?by?gmtime(),?localtime(),?and?strptime(),?and
accepted?by?asctime(),?mktime()?and?strftime().??May?be?considered?as?a
sequence?of?9?integers.
>>>?time.struct_time(time.localtime())
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=22,?tm_hour=19,?tm_min=42,?tm_sec=7,?
tm_wday=3,?tm_yday=173,?tm_isdst=0)
time

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

Return?the?current?time?in?seconds?since?the?Epoch.
Fractions?of?a?second?may?be?present?if?the?system?clock?provides?them.
>>>?time.time()
1498131760.7711384
>>>?time.time()
1498131764.7621822

几种时间形式的转换

1.把时间戳转换成结构化时间,使用的是time.localtime或time.gmtime命令。

>>>?t1=time.time()
>>>?print(t1)
1498132526.8227696
>>>?t2=time.localtime(t1)
>>>?print(t2)
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=22,?tm_hour=19,?tm_min=55,?tm_sec=26,?
tm_wday=3,?tm_yday=173,?tm_isdst=0)

2.把结构化时间转换成时间戳,使用time.mktime命令

>>>?t3=time.struct_time(time.localtime())
>>>?print(t3)
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=22,?tm_hour=19,?tm_min=58,?tm_sec=29,?tm_wday=3,?tm_yday=173,?tm_isdst=0)
>>>?t4=time.mktime(t3)
>>>?print(t4)
1498132709.0

3.把结构化时间转换成时间字符串,使用time.strftime命令

>>>?t1=time.localtime()
>>>?print(t1)
time.struct_time(tm_year=2017,?tm_mon=6,?tm_mday=22,?tm_hour=20,?tm_min=0,?tm_sec=37,?tm_wday=3,?
tm_yday=173,?tm_isdst=0)
>>>?t2=time.strftime("%Y-%m-%d",t1)
>>>?print(t2)
2017-06-22

4.把字符串时间转换成结构化时间,使用的是time.strptime命令

>>>?t1="2017-05-20?08:08:10"
>>>?print(t1)
2017-05-20?08:08:10
>>>?t2=time.strptime(t1,"%Y-%m-%d?%H:%M:%S")
>>>?print(t2)
time.struct_time(tm_year=2017,?tm_mon=5,?tm_mday=20,?tm_hour=8,?tm_min=8,?tm_sec=10,
tm_wday=5,?tm_yday=140,?tm_isdst=-1)

例子:

假如我有一个时间字符串,然后想得到这个时间之后3天的时间字符串,可以使用如下的命令:

import?time
time1?=?"2017-05-20"
#把时间字符串转换为时间戳,然后加上3天时间的秒数
time2?=?time.mktime(time.strptime(time1,"%Y-%m-%d"))+3?*?24?*?3600
#把转换后的时间戳再转换成时间字符串
time3?=?time.strftime("%Y-%m-%d",?time.localtime(time2))
print(time3)

文章来源:https://blog.csdn.net/hakesashou/article/details/135025014
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。