admin 管理员组

文章数量: 887053


2024年1月14日发(作者:斯特林公式证明)

python时间模块小结-电脑资料

一:经常使用的时间方法

1.得到当前时间

使用time模块,首先得到当前的时间戳

In [42]: ()

Out[42]: 1408066927.208922

将时间戳转换为时间元组 struct_time

In [43]: ime(())

Out[43]: _time(tm_year=2014, tm_mon=8,

tm_mday=15, tm_hour=9, tm_min=42, tm_sec=20, tm_wday=4,

tm_yday=227, tm_isdst=0)

格式化输出想要的时间

In

)))

Out[44]: '2014-08-15 09:43:04'

接上文,不加参数时,默认就是输出当前的时间

In [48]: me('%Y-%m-%d %H:%M:%S')

Out[48]: '2014-08-15 09:46:53’

当然也可以透过datetime模块来实现,如下:

In [68]: t = ()

In

%M:%S')

Out[69]: '2014-08-15 10:04:51’

同时,也可以只使用datetime模块

In

Out[46]: '2014-08-15 09:45:27’

[46]:

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

[69]:

mestamp(t).strftime('%Y-%m-%d %H:[44]:

me('%Y-%m-%d %H:%M:%S',ime((

In

Out[47]: '2014-08-15 09:46:10'

2.获取时间差,计算程序的执行时间等:

使用time模块:

In [75]: def t():

....: start = ()

....: (10)

....: end = ()

....: print end - start

....:

In [76]: t()

10.

使用datetime模块:

In [49]: starttime = ()

In [50]: endtime = ()

In [51]: print (endtime - starttime).seconds

6

[47]:

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

3.计算昨天的日期(发散思维,计算其他日期相加、相减等):

In [52]: d1 = ()

In [53]: d2 = d1 - lta(days=1)

In [54]: d1

Out[54]: me(2014, 8, 15, 9, 54, 10, 68665)

In [55]: d2

Out[55]: me(2014, 8, 14, 9, 54, 10, 68665)

4.时间元组 struct_time转化为时间戳

In [56]: ()

Out[56]: me(2014, 8, 15, 9, 57, 52, 779893)

In [57]: ().timetuple()

Out[57]: _time(tm_year=2014, tm_mon=8,

tm_mday=15, tm_hour=9, tm_min=58, tm_sec=12, tm_wday=4,

tm_yday=227, tm_isdst=-1)

In [58]: (().timetuple())

Out[58]: 1408067904.0

me也挺有用的,将时间字符串转换为时间元组struct_time

In [73]: me('%Y-%m-%d %H:%M:%S')

Out[73]: '2014-08-15 10:27:36'

In

Out[74]:

[74]: me('2014-08-15

tm_mon=8,

10:27:36','%Y-%m-%d %H:%M:%S')

_time(tm_year=2014,

tm_mday=15, tm_hour=10, tm_min=27, tm_sec=36, tm_wday=4,

tm_yday=227, tm_isdst=-1)

##二:time和datetime模块常用方法简介

表示时间的两种方式:

1. 时间戳(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的

2. 时间元组 即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同

time 模块常用方法小记

()

这个需要注意,在不同的系统上含义不同,。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间 戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32 上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)

budong@budongdeMacBook-Pro:/tmp$ cat

#!/usr/bin/env python

import time

if __name__ == '__main__':

(1)

print "clock1:%s" % ()

(1)

print "clock2:%s" % ()

(1)

print "clock3:%s" % ()

运行脚本:

budong@budongdeMacBook-Pro:/tmp$ ./

clock1:0.059173

clock2:0.059299

clock3:0.059416

(secs)

线程推迟指定的时间运行

适合放在脚本里,定时sleep一会然后继续干啥

In [138]: while True:

.....: (3)

.....: print me('%H:%M:%S')

.....:

17:21:35

17:21:38

17:21:41

17:21:44

……

ime([secs])

将一个时间戳转换成一个当前时区的struct_time,如果seconds参数未输入,则以当前时间为转换标准

未提供secs参数时,按当前时间为准

In [141]: ime()

Out[141]: _time(tm_year=2014, tm_mon=8,

tm_mday=14, tm_hour=17, tm_min=23, tm_sec=48, tm_wday=3,

tm_yday=226, tm_isdst=0)

提供secs为当前时间戳时

In [142]: ()

Out[142]: 1408008232.217969

In [143]: ime(())

Out[143]: _time(tm_year=2014, tm_mon=8,

tm_mday=14, tm_hour=17, tm_min=24, tm_sec=2, tm_wday=3,

tm_yday=226, tm_isdst=0)

me(format[, t])

将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出

t未指定,传入ime()作为默认参数:

In [156]: me('%Y-%m-%d %H:%M:%S')

Out[156]: '2014-08-14 17:28:16’

指定t为ime(1407945600.0)时:

In [157]: ime(1407945600.0)

Out[157]: _time(tm_year=2014, tm_mon=8,

tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3,

tm_yday=226, tm_isdst=0)

In

00.0))

Out[158]: '2014-08-14 00:00:00’

()

返回当前时间的时间戳

In [161]: ()

Out[161]: 1408008711.730218

(t)

将一个struct_time转换为时间戳,如下ime接收一个[158]:

me('%Y-%m-%d %H:%M:%S',ime(14079456

时间戳返回一个struct_time,而接收一个struct_time,返回一个时间戳

In [159]: ime(1407945600.0)

Out[159]: _time(tm_year=2014, tm_mon=8,

tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3,

tm_yday=226, tm_isdst=0)

In [160]: (ime(1407945600.0))

Out[160]: 1407945600.0

残阳似血的博客:

官方time模块:

##datetime 模块常用方法小记

datetime模块常用的主要有下面这四个类:

1. : 是指年月日构成的日期(相当于日历)

2. : 是指时分秒微秒构成的一天24小时中的具体时间(相当于手表)

3. me: 上面两个合在一起,既包含时间又包含日期

4. lta: 时间间隔对象(timedelta),

电脑资料

《python 时间模块小结》(www.)。一个时间点(datetime)加上一个时间间隔(timedelta)可以得到一个新的时间点(datetime)。比如今天的上午3点加上5个小时得到今天的上午8点。同理,两个时间点相减会得到一个时间间隔。

1.新建一个date对象,日期为今天,既可以直接调用(),也可以直接向()传值,如下:

In [4]: today = ()

In [5]: today

Out[5]: (2014, 8, 15)

In [6]: t = (2014,8,15)

In [7]: t

Out[7]: (2014, 8, 15)

me(format) 格式化为需要的时间,如常用的 “年-月-日 小时:分钟:秒” 格式

In [8]: me('%Y-%m-%d %H:%M:%S')

Out[8]: '2014-08-15 00:00:00’

date对象中小时、分钟、秒默认都是0,纪元年的那个时间

() 转成struct_time格式,这样传递给(t) 后,直接转成时间戳格式

In [9]: ple()

Out[9]: _time(tm_year=2014, tm_mon=8,

tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4,

tm_yday=227, tm_isdst=-1)

In [10]: (ple())

Out[10]: 1408032000.0

e(year, month, day) 返回一个替换后的date对象

In [11]: e(year=2013)

Out[11]: (2013, 8, 15)

mestamp(timestamp) 将时间戳转化为date对象

In [12]: mestamp(1408058729)

Out[12]: (2014, 8, 15)

1.新建一个time对象

In [15]: t

Out[15]: (8, 45, 20)

.(format)格式化输出

In [16]: me('%Y-%m-%d %H:%M:%S')

Out[16]: '1900-01-01 08:45:20’

time对应的年、月、日为1900、01、01,纪元年的那个时间

e([hour[,

In [17]: e(hour=9)

Out[17]: (9, 45, 20)

me类

其实和date的那些方法差不多了,大概看以下,简单说说

1.新建一个datetime对象,日期为今天,既可以直接调用(),也可以直接向me()传值,如下:

In [21]: d1 = ()

In [22]: d1

Out[22]: me(2014, 8, 15, 8, 12, 34, 790945)

In [23]: d2 = me(2014, 8, 15, 8, 12, 34, 790945)

In [24]: d2

Out[24]: me(2014, 8, 15, 8, 12, 34, 790945)

([tz]) 当不指定时区时,和()是一样的结果,如下

In [25]: ()

Out[25]: me(2014, 8, 15, 8, 14, 50, 738672)

3..me(format) 格式化为需要的时间,如常用的 “年-月-日 小时:分钟:秒” 格式

In [27]: d1

Out[27]: me(2014, 8, 15, 8, 12, 34, 790945)

In [28]: me('%Y-%m-%d %H:%M:%S')

Out[28]: '2014-08-15 08:12:34’

() 转成struct_time格式,这样传递给(t) 后,直接转成时间戳格式

In [29]: d1

Out[29]: me(2014, 8, 15, 8, 12, 34, 790945)

minute[, second[,

microsecond[, tzinfo]]]]]) 返回一个替换后的time对象

In [30]: ple()

Out[30]: _time(tm_year=2014, tm_mon=8,

tm_mday=15, tm_hour=8, tm_min=12, tm_sec=34, tm_wday=4,

tm_yday=227, tm_isdst=-1)

In [31]: (ple())

Out[31]: 1408061554.0

e(year, month, day) 返回一个替换后的date对象

In [32]: d1

Out[32]: me(2014, 8, 15, 8, 12, 34, 790945)

In [33]: e(year=2000)

Out[33]: me(2000, 8, 15, 8, 12, 34, 790945)

mestamp(timestamp) 将时间戳转化为datetime对象

In [34]: ()

Out[34]: 1408061894.081552

In [35]: mestamp(1408061894)

Out[35]: me(2014, 8, 15, 8, 18, 14)

lta类

没啥好说的,主要做时间的加减法用,如下:

In [78]: today = ()

In [79]: yesterday = today - lta(days=1)

In [80]: yesterday

Out[80]: me(2014, 8, 14, 15, 8, 25, 783471)

In [81]: today

Out[81]: me(2014, 8, 15, 15, 8, 25, 783471)


本文标签: 时间 模块 返回 计算 对象