liyihao

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

原链:http://www.cnblogs.com/vamei/archive/2012/09/03/2669426.html

笔记:这里建议多看补充材料,作者介绍的并不多

 

#第26讲 日期与时间
import time
print (time.time())

#输出是一个挂钟时间 wall clock time
#挂钟时间:这个时间是从某个固定时间起点到现在的时间间隔,单位是秒数
#这个时间的选择是跟计算机相关的,这个时间起点是固定的

print (time.clock())

#输出是处理器时间processor clock time ,单位也是秒数
#测量CPU实际运行的时间,测量计算机性能,CPU闲置时,处理器时间会暂停


#time包
time.sleep(1)
#可以将程序置于休眠状态,直到某时间间隔之后再唤醒,继续运行

print ('start')
time.sleep(5) #休息5s
print ('wake up')


st = time.gmtime() #返回struct_time 格式的UTC时间,struct_time注释1
#UTC 时间是格林尼治时间,也就是英伦敦时间
#time.struct_time(tm_year=2017, tm_mon=11, tm_mday=5, tm_hour=9, tm_min=43, tm_sec=23, tm_wday=6, tm_yday=309, tm_isdst=0)

st = time.localtime() #返回stuct_time 格式的当地时间,就是东八区北京时间了
#返回
#time.struct_time(tm_year=2017, tm_mon=11, tm_mday=5, tm_hour=17, tm_min=44, tm_sec=19, tm_wday=6, tm_yday=309, tm_isdst=0)

s = time.mktime(st) #将stuct_time 格式转换成wall clock time


#datetime包
'''
1.简介
datetime 是基于time 包的一个高级包
datetime 可以理解为date time 两个组成部分
date是年月日构成的日期(就是日历)
time是一天24H的具体时间(时钟)

可以分开进行管理
datetime.date    datetime.time
也可以两者合在一起
datetime.datetime
'''

import datetime
t = datetime.datetime(2012,9,3,21,30)
print (t)

#输出2012-09-03 21:30:00
#返回t 带有year month day hour minute second

'''
2.运算
datetime包还定义了时间间隔对象,timedelta
一个时间点,加上一个时间间隔,可以得到一个新的时间点
'''

import datetime
t      = datetime.datetime(2017,11,5,18,30)
t_next = datetime.datetime(2017,12,5,18,30)
delta1 = datetime.timedelta(seconds = 600)
delta2 = datetime.timedelta(weeks = 3)
print (t + delta1) #t时间加600s
#输出2017-11-5 18:40:00
print (t + delta2) #t时间加上3周,一周7天
#输出2017-11-26 18:30:00
print (t_next - t) #两个时间相减
#输出30*24*60*60 秒数
#实际输出30 days, 0:00:00


#datetime.timedelta()传递参数是可以选择,days hours seconds milliseconds(毫秒) microsecond(微秒)

#两个datetime进行比较
print (t > t_next)
#返回就是布尔值True False


'''
3.datetime对象与字符串转换
格式化读取方式读取时间信息
'''

from datetime import datetime
format = 'output-%Y-%m-%d-%H%M%S.txt'
str    = 'output-1970-12-23-030000.txt'
t      = datetime.strptime(str, format)
print (t)
#输出 1970-12-23 03:00:00

#时间转换字符串
print (t.strftime(format))

#这里注意,strftime 是按照上面的format进行转换的
#输出也是带output的


#time.strftime(format[, t])

#函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定
t  = (2009, 2, 17, 17, 3, 38, 1, 48, 0) #时间元组 年月日 时分秒 周天令
t1 = time.mktime(t)  #时间元组转换wall clock time 时间的浮点数
print (t1)
print (type(t1)) # float
t2 = time.gmtime(t1)#转换成UTC 的时间
print (t2)
print (type(t2))#time.struct_time 标准时间元组
t3 = time.strftime('%Y-%m-%d %H:%M:%S', t2) #按照输入格式 格式化
print (t3)#输出格式化时间

#现在是英伦敦时间,转化当地时间
t4 = time.localtime(t1)
print (t4)

#换一个格式
format ='%Y %b %d %H:%M:%S'
print (time.strftime(format,t4))


'''
注释1
struct_time 是一个时间元组
0    tm_year    2008
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是决定是否为夏令时的旗帜


注释2
获取日历


'''
import calendar
cal = calendar.month(2016, 1)
print ('以下输出2016年1月的日历:')
print (cal)

'''
以下输出2016年1月的日历:
    January 2016
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
'''


'''
回归一下正则的作业

作业
有一个文件,文件名为output_1981.10.21.txt 。下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几。将文件改名为output_YYYY-MM-DD-W.txt (YYYY:四位的年,MM:两位的月份,DD:两位的日,W:一位的周几,并假设周一为一周第一天)
'''

import re
filedate = re.search('output_(\d{4}.\d{2}.\d{2})', 'output_1981.10.21.txt')
print (filedate.group(1))
print (type(filedate.group(1)))
fileinfo = filedate.group(1)

from datetime import datetime
format = '%Y.%m.%d'
time = datetime.strptime(fileinfo,format)
print (time)
print (type(time))

'''
突然想到用str 的替换方法
'''
filename2 = fileinfo.replace('.', '-')
print (filename2)
print (type(filename2))

wayofday = time.weekday()
wayofday = wayofday + 1
print (wayofday)

targetfilename = 'output'+ '_' + filename2 + '-' + str(wayofday) + '.txt'


'''
昨天的作业只用到dayofweek
时间过滤,就是把输出的1981-10-21 00:00:00
今天找到了,但是关闭了。。还是没能完成过滤操作


对象方法/属性名称     描述
d.year                     年
d.month             月
d.day                     日
d.replace(year[, month[, day]])     生成并返回一个新的日期对象,原日期对象不变
d.timetuple()             返回日期对应的time.struct_time对象
d.toordinal()             返回日期是是自 0001-01-01 开始的第多少天
d.weekday()             返回日期是星期几,[0, 6],0表示星期一
d.isoweekday()             返回日期是星期几,[1, 7], 1表示星期一
d.isocalendar()     返回一个元组,格式为:(year, weekday, isoweekday)
d.isoformat()             返回‘YYYY-MM-DD’格式的日期字符串
d.strftime(format)     返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同
'''

注释:#上面define 了str ,所以后面用str 会报错 

 

 

资料补充链接:http://blog.csdn.net/p9bl5bxp/article/details/54945920 

posted on 2017-11-06 17:13  liyihao  阅读(238)  评论(0)    收藏  举报