用python实现计算黑色星期五

用python实现计算黑色星期五,第1张

#!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 calendar

import 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 求日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9713176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存