#!usr/bin/env python
#-- coding=utf-8 --
from datetime import
import calendar
class BlackFriday(object):
def __init__(self,year):
selfyear=year
def display(self):
print 'The black Fridays of year %s is(%s-1-1 is %s):' % (selfyear,selfyear,datetime(selfyear,1,1)strftime('%A'))
L=[]
for i in range(12):
if 4==calendarweekday(selfyear,i+1,13):
Lappend(str(selfyear)+'/'+str(i+1)+'/13')
# print '%s' % datetime(selfyear,i+1,13)strftime('%A')
if None==L:
print "There's none of Black Friday in year %s" % selfyear
else:
print L
year=raw_input('请输入年份(1970~9999):')
BlackFriday(int(year))display()
保存为blackfridaypy后运行结果如下:
[root@localhost zhidao]# python blackfridaypy
请输入年份(1970~9999):1970
The black Fridays of year 1970 is(1970-1-1 is Thursday):
['1970/2/13', '1970/3/13', '1970/11/13']
[root@localhost zhidao]# python blackfridaypy
请输入年份(1970~9999):1986
The black Fridays of year 1986 is(1986-1-1 is Wednesday):
['1986/6/13']
[root@localhost zhidao]#
python 获取日期我们需要用到time模块,比如timestrftime方法
timestrftime('%Y-%m-%d',timelocaltime(timetime()))
最后用timestrftime()方法,把刚才的一大串信息格式化成我们想要的东西,现在的结果是:
2013-03-31
timestrftime里面有很多参数,可以让你能够更随意的输出自己想要的东西:
下面是timestrftime的参数:
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地AM或PM的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
# -- coding: cp936 --
#设置星期天的初始值为0
mondays=0
def getmonthdays(year):
isleapyear=year%400==0 or (year%4==0 and (not year%100==0))
if isleapyear:
return [31,29,31,30,31,30,31,31,30,31,30,31]
return [31,28,31,30,31,30,31,31,30,31,30,31]
#计算18991231(这天是星期天)190111之间的天数
pastdays=1 #18991231过一天是190011
monthdays=getmonthdays(1900)
for month in range (0,12):
pastdays+=monthdays[month]
#计算190111到20001231星期天的数字
for year in range(1901,2001):
monthdays=getmonthdays(year)
for month in range(0,12):
if pastdays%7==0:
mondays+=1
pastdays+=monthdays[month]
print "1901年1月1月至2000年12月31日共有%d个星期天落在每月第一天"%mondays
s=raw_input()upper()
if s[0]=='M':
print 'Monday'
if s[0]=='W':
print 'Wednesday'
if s[0]=='F':
print 'Friday'
if s[0]=='S':
if s[1]=='A':
print 'Saturday'
else:
print 'Sunday'
if s[0]=='T':
if s[1]=='U':
print 'Tuesday'
else:
print 'Thuesday'
python中的时间模块主要有time, datetime。
I, time模块
time模块中包含了四种时间格式:
float格式,即给定时间相对于epoch增加的秒数
tuple格式,一个九元组 (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
string格式,'Mon Feb 6 15:00:06 2012'
format格式,以指定的格式生成的时间
针对这几种时间格式,time模块提供了函数在格式之间相互转换。
asctime(tuple) ->string
ctime(float) ->string
gmtime(float) ->tuple
localtime(float) ->tuple
mktime(tuple) ->float
strftime(format, tuple) ->format string
strptime(formatstring, format) ->tuple
time() -> float
上述函数中,除了time()函数直接返回当前时间相对于epoch的秒数外,其他函数都要求有时间的输入,如果没有输入,则默认使用当前时间。
另外,strftime和strptime中的format使用下面的格式:
%a 英文星期简写
%A 英文星期的完全
%b 英文月份的简写
%B 英文月份的完全
%c 显示本地日期时间
%d 日期,取1-31
%H 小时, 0-23
%I 小时, 0-12
%m 月, 01 -12
%M 分钟,1-59
%j 年中当天的天数
%w 显示今天是星期几
%W 第几周
%x 当天日期
%X 本地的当天时间
%y 年份 00-99间
%Y 年份的完整拼写
%S 秒(00-59)
除了上述的时间转换函数之外,模块还提供了下面的函数:
clock() 返回进程的创建时间,以秒计数的float
sleep(float) sleep一段时间,以秒计数
tzset() 更改时区
II, datetime
datetime模块定义了下面这几个类:
datetimedate:表示日期的类。常用的属性有year, month, day;datetimetime:表示时间的类。常用的属性有hour, minute, second, microsecond;datetimedatetime:表示日期时间。datetimetimedelta:表示时间间隔,即两个时间点之间的长度。datetimetzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)
注 :上面这些类型的对象都是不可变(immutable)的。
下面详细介绍这些类的使用方式。
date类
date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下:
class datetimedate(year, month, day):参数的意义就不多作解释了,只是有几点要注意一下:
year的范围是[MINYEAR, MAXYEAR],即[1, 9999];month的范围是[1, 12]。(月份是从1开始的,不是从0开始的~_~);day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天;
date类定义了一些常用的类方法与类属性,方便我们 *** 作:
datemax、datemin:date对象所能表示的最大、最小日期;dateresolution:date对象表示日期的最小单位。这里是天。datetoday():返回一个表示当前本地日期的date对象;datefromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;datetimefromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)
import datetime
datetimedatetimenow()isocalendar()
返回结果是三元组(年号,第几周,第几天)
也可以求任意一天的周序号
datetimedate(2014, 6, 8)isocalendar()以上是求2014-06-08这一天的周序号
取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年到现在时间相隔的时间。你可以试下下面的方式来取得当前时间的时间戳:import timeprint timetime()
使用time模块的timelocaltime()获取当前日期,使用calendar模块calendarmonthrange的来获取指定月份的天数。即可得到月初日期和月末日期,代码如下:
import calendarimport time
day_now = timelocaltime()
day_begin = '%d-%02d-01' % (day_nowtm_year, day_nowtm_mon) # 月初肯定是1号
wday, monthRange = calendarmonthrange(day_nowtm_year, day_nowtm_mon) # 得到本月的天数 第一返回为月第一日为星期几(0-6), 第二返回为此月天数
day_end = '%d-%02d-%02d' % (day_nowtm_year, day_nowtm_mon, monthRange)
print('月初日期为:',day_begin, '月末日期为:',day_end)
效果如下:
以上就是关于用python实现计算黑色星期五全部的内容,包括:用python实现计算黑色星期五、python获取发布日期等于特定时间的信息、python 求日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)