python基础教程_学习笔记17:标准库:一些最爱——time

标准库:一些最爱

time

time模块所包含的函数能够实现以下功能:

获取当前时间、操作系统时间和日期、从字符串读取时间以及格式化时间为字符串。

日期可以用实数(从“新纪元”的1月1日0点开始计算到现在的秒数,新纪元是一个与平台相关的年份,对unix来说是1970年),或者是包含有9个整数的元组。

日期元组的字段含义

如元组:

(2008,1,21,12,2,56,0,21,0)

表示2008年1月21日12时2分56秒,星期一,且是当年的第21天(无夏令时)。


索引


字段



0



比如2000,2001,等等


1



1~12


2



1~31


3



0~23


4



0~59


5



0~61


6



当周一为0时,范围0~6


7


儒历日


范围1~366


8


夏令时


0、1或-1

秒的范围是0~61是为了应付闰秒和双闰秒。夏令时的数字是布尔值(真或假),但如果使用了-1,mktime就会工作正常。

重要的函数


函数


描述


asctime([tuple])


将时间元组转换为字符串


localtime([secs])


将秒数转换为日期元组,以本地时间为准


mktime(tuple)


将时间元组转换为本地时间


sleep(secs)


休眠(不做任何事情)secs秒


strptime(string[,format])


将字符串解析为时间元组


time()


当前时间(新纪元开始后的秒数,以UTC为准)

>>> import time

>>> time.asctime()

‘Thu Jun 26 14:34:03 2014‘

获得全球统一时间:

>>> time.gmtime()

time.struct_time(tm_year=2014, tm_mon=6, tm_mday=26, tm_hour=6, tm_min=38, tm_sec=42, tm_wday=3, tm_yday=177, tm_isdst=0)

time.mktime函数与time.localtime功能相反;

time.time使用自新纪元开始计算的秒数返回当前(全球统一)时间,尽管每个平台的新纪元可能不同,但可以通过记录某事件(如函数调用)发生前后time的结果来对该事件计时,然后计算差值。

练习 获取当前时间

脚本内容

$ cat time-example-1.py

#File : time-example-1.py

import time

now=time.time()

print now,"seconds since",time.gmtime(0)[:6]

print

print "or in other words:"

print "- local time:",time.localtime(now)

print "- utc:",time.gmtime(now)

执行结果

$ python time-example-1.py

1403765543.77 seconds since (1970, 1, 1, 0, 0, 0)

or in other words:

- local time: (2014, 6, 26, 14, 52, 23, 3, 177, 0)

- utc: (2014, 6, 26, 6, 52, 23, 3, 177, 0)

练习 格式化日期和时间

脚本内容

$ cat  time-example-2.py

#File : time-example-2.py

import time

now=time.localtime(time.time())

print time.asctime(now)

print time.strftime("%y%m%d %H:%M",now)

print time.strftime("%a %b %d",now)

print time.strftime("%c",now)

print time.strftime("%I %p",now)

print time.strftime("%Y-%m-%d %H:%M:%S %Z",now)

# do it by hand ...

year,month,day,hour,minute,second,weekday,yearday,daylight=now

print "%04d-%02d-%02d" %(year,month,day)

print "%02d:%02d:%02d" %(hour,minute,second)

print ("MON","TUE","WED","THU","FRI","SAT","SUN")[weekday],yearday

执行结果

$ python time-example-2.py

Thu Jun 26 15:01:47 2014

140626 15:01

Thu Jun 26

Thu Jun 26 15:01:47 2014

03 PM

2014-06-26 15:01:47 CST

2014-06-26

15:01:47

THU 177

练习 使用time.strptime解析日期和时间

脚本内容

$ cat time-example-6.py

#File : time-example-6.py

import time

try:

strptime=time.strptime

except AttributeError:

from strptime import strptime

print strptime("30 Nov 00","%d %b %y")

print strptime("1 Jan 70 1:30pm","%d %b %y %I:%M%p")

执行结果

$ python time-example-6.py

time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=13, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=-1)

练习 把本地时间对转换为时间整型

脚本内容

$ cat time-example-3.py

#File : time-example-3.py

import time

to=time.time()

tm=time.localtime(to)

print tm

print to

print time.mktime(tm)

执行结果

time.struct_time(tm_year=2014, tm_mon=6, tm_mday=26, tm_hour=15, tm_min=11, tm_sec=9, tm_wday=3, tm_yday=177, tm_isdst=0)

1403766669.32

1403766669.0

练习 把UTC时间转换为世界整型

脚本内容

$ cat time-example-4.py

#File : time-example-4.py

import time

def _d(y,m,d,days=(0,31,59,90,120,151,181,212,243,273,304,334,365)):

return (((y-1901)*1461)/4 + days[m-1] + d +

(( m>2 and not y % 4 and (y % 100 or not y % 400)) and 1))

def timegm(tm,epoch=_d(1070,1,1)):

year,month,day,h,m,s=tm[:6]

assert year>=1970

assert 1 <= month <= 12

return (_d(year,month,day) -epoch) * 86400 + h*3600 + m*60 + s

t0=time.time()

tm=time.gmtime(t0)

print tm

print t0

print timegm(tm)

执行结果

$ python time-example-4.py

time.struct_time(tm_year=2014, tm_mon=6, tm_mday=26, tm_hour=7, tm_min=23, tm_sec=22, tm_wday=3, tm_yday=177, tm_isdst=0)

1403767402.91

29805607402

练习 校准算法

脚本内容

$ cat time-example-5.py

#File : time-example-5.py

import time

def procedure():

time.sleep(2.5)

t0=time.clock()

procedure()

print time.clock()-t0,"Seconds process time"

t0=time.time()

procedure()

print time.time()-t0,"seconds wall time"

执行结果

$ python time-example-5.py

0.0 Seconds process time

2.50005602837 seconds wall time

python基础教程_学习笔记17:标准库:一些最爱——time

时间: 2024-10-08 17:15:49

python基础教程_学习笔记17:标准库:一些最爱——time的相关文章

python基础教程_学习笔记15:标准库:一些最爱——fileinput

标准库:一些最爱 fileinput 重要的函数 函数 描述 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 lineno() 返回当前(累计)的名称 filelineno() 返回当前文件的行数 isfirstline() 检查当前行是否是文件的第一行 isstdin() 检查最后一行是否来自sys.stdin nextfile() 关闭当前文件,移动到下一个文件 close() 关闭序列 fileinput

python基础教程_学习笔记16:标准库:一些最爱——random

标准库:一些最爱 random random模块包括返回随机数的函数,可以用于模拟或者用于任何产生随机输出的程序. 事实上,所产生的数字都是伪随机数,它们以一个可预测的系统作为基础,除非是为了强加密的目标,否则这些随机数还是足够随机的.如果真的需要随机性,可以使用os模块的urandom函数. 重要函数 函数 描述 random() 返回0<=n<1之间的随机实数n,其中0<n<=1 getrandbits(n) 以长整型形式返回n个随机位(二进制数) uniform(a,b) 返

python基础教程_学习笔记14:标准库:一些最爱——re

标准库:一些最爱 re re模块包含对正则表达式的支持,因为曾经系统学习过正则表达式,所以基础内容略过,直接看python对于正则表达式的支持. 正则表达式的学习,见<Mastering Regular Expressions>(精通正则表达式) re模块的内容 最重要的一些函数 函数 描述 compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象 search(pattern,string[,flags]) 在字符串中寻找模式 match(pattern,st

python基础教程_学习笔记20:标准库:一些最爱——os

标准库:一些最爱 os os模块为你提供了访问多个操作系统服务的功能. os和它的子模块os.path还包括一些用于检查.构造.删除目录和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和变量 函数/变量 描述 environ 对环境变量进行映射 system(command) 在子shell中执行操作系统命令 sep 路径中的分隔符 pathsep 分隔路径的分隔符 linesep 行分隔符('\n','\r','\r\n') urandom(n) 返回n字节的加密强随机数据 os

python基础教程_学习笔记13:标准库:一些最爱——sys

标准库:一些最爱 sys sys这个模块让你能够访问与python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描述 argv 命令行参数,包括脚本名称 exit([arg]) 退出当前程序,可选参数为给定的返回值或者错误信息 modules 映射模块名字到载入模块的字典 path 查找模块所在目录的目录名列表 platform 类似sunos5或者win32的平台标识符 stdin 标准输入流--一个类文件对象 stdout 标准输出流--一个类文件对象 stde

python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列

标准库:一些最爱 集合.堆和双端队列 集合 集合Set类位于sets模块中. >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> set(range(10)) set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 集合是由序列(或其他可迭代的对象)构建的.主要用于检查成员资格,因此,副本是被忽略的: >>> range(10)*2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9

python基础教程_学习笔记18:标准库:一些最爱——shelve

标准库:一些最爱 shelve Shelve唯一有趣的函数是open.在调用它的时候(使用文件名作为参数),它会返回一个Shelf对象,可以用它来存储内容.只需要把它当作普通的字典(但是键一定要作为字符串)来操作即可,在完成工作之后,调用它的close方法. 意识到shelve.open函数返回的对象并不是普通的映射是很重要的. >>> import shelve >>> s=shelve.open('a.txt') >>> s['x']=['a','

python基础教程_学习笔记23:图形用户界面

图形用户界面 丰富的平台 在编写Python GUI程序前,需要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合,可以通过叫做GUI工具包的给定Python模块进行访问. 工具包 描述 Tkinter 使用Tk平台.很容易得到.半标准. wxpython 基于wxWindows.跨平台越来越流行. PythonWin 只能在Windows上使用.使用了本机的Windows GUI功能. JavaSwing 只能用于Jython.使用本机的Java GUI. PyGTK 使用GTK

python基础教程_学习笔记26:好玩的编程

好玩的编程 程序设计的柔术 当大家坐下来并计划应该如何组织程序的时候,对于这个具体的程序,还没有任何的经验.在实现功能的时候,会逐渐地学到对原始设计有用的新知识.不应该无视一路走来所吸取的教训,而应该将它们用于软件的重新设计(或重构)中. 灵活性的实现包括许多方面,下面是其中两个: 原型设计:python最棒的功能之一就是可以快速地编写程序.编写原型程序是更充分地了解问题的一种很好的方法. 配置:灵活性有很多种存在形式.配置的目的就是让程序某部分的改变更简单,对于你和用户来说都是这样. 第三点是