Python Cookbook学习记录 ch3_1/2_2013/10/29
3.1计算昨天和明天的日期
可以使用datetimie的timedelta方法来表示时间差
>>> import datetime >>> today = datetime.date.today() >>> yesteday = today - datetime.timedelta(days=1) >>> tomorrow = today + datetime.timedelta(days=1) >>> print today,yesteday,tomorrow 2013-10-29 2013-10-28 2013-10-30
增加一年:
>>> nextyear = today + datetime.timedelta(days=365) >>> print nextyear 2014-10-29
获得现在的时间和1小时后的时间:
>>> now = datetime.datetime.today() >>> nexthour = now + datetime.timedelta(seconds = 3600) >>> print now,nexthour 2013-10-29 21:11:18.721000 2013-10-29 22:11:18.721000
3.2寻找上一个星期五
除了需要datetime模块,还需要日历calendar模块:
>>> import datetime,calendar >>> oneday = datetime.timedelta(days=1) >>> lastFriday = datetime.date.today() >>> while lastFriday.weekday() != calendar.FRIDAY: lastFriday -= oneday >>> print lastFriday.strftime('%A, %d-%b-%Y') Friday, 25-Oct-2013
其中weekday()方法的解释如下,可见此方法返回的数值,如果是周五的话,那么返回的值应该是4,而calendar.FRIDAY的值就是4
>>> help(datetime.date.weekday)
Help on method_descriptor:
weekday(...)
Return the day of the week represented by the date.
Monday == 0 ... Sunday == 6
>>> print calendar.FRIDAY 4
strfttime()将日期格式化,命令格式如下(区分大小写):
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
还有一种方法直接通过计算当前日期和周五的时间差来得到上个周五的日期:
import datetime, calendar today = datetime.date.today() targetDay = calendar.FRIDAY thisDay = today.weekday() deltaToTarget = (thisDay - targetDay) % 7 lastFriday = today - datetime.timedelta(days=deltaToTarget) print lastFriday.strftime('%d-%b-%Y')
浙公网安备 33010602011771号