python 求日期

python 求日期,第1张

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

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

貌似没有现成的从别的地方找一个能实现你说的功能的代码,你可以看看:

#encoding:utf8

def w_day(y,m,d):#已知日期求星期

    c=y//100

    y=int(str(y)[-2:])

    w=(y+(y//4)+(c//4)-2c+(26(m+1)//10)+d-1)%7 ##蔡勒公式只适合于1582年10月15日之后

    return w

def ml(y,m,d=1):#当月有几天

    ly=(y%400==0) or (y%4==0 and y%100!=0) and 1 or 0 #闰年=1,平年=0

    return (m in (4,6,9,11) and 30 or (m==2 and 28+ly or 31))

    

def cal(y,m,d): #输出日历

    wf=w_day(y,m=1,d=1) #该月的第一天是星期几

    mc=[(d==x and ("["+str(x)rjust(2)+"]")center(5) or str(x)rjust(2)center(5)) for x in  range(1,ml(y,m)+1)]

    mc[:0]=[" "5]wf

    mc=[(i+1)%7 and j or j+"\n" for i,j in enumerate(mc)]

    td=("%s年%s月%s日  星期%s\n" %(y,m,d,("一","二","三","四","五","六","日")[w_day(y,m,d)-1]))center(35)

    x="\n Sun  Mon  Tue  Wed  Thu  Fri  Sat\n"

    return td+x+""join(mc)

    

##################################################################

##################################################################

if __name__ == '__main__':

    import datetime

    T=datetimedatetoday()

    print("今天是:\n"+cal(Tyear,Tmonth,Tday))

import datetime

today = datetimedatetoday()

weekday = datetimedateweekday(today)+1

print today

print weekday

python 32 下: dict = ['Sunday','Monday','Tuesday','Thirthday','Thurday','Friday','Saturday']print(dict[int(input())]) 搞定 如果其他语言也差不多,就是第1步定义一个数组把所有英文单词存进去(上面的dict),第2步获取用户输入(上面的input())第3布把输入转成数字(上面的int())第4步用这个数字做索引去取数组,(上面的中括号)第5步输出结果(上面的print()) python写起来可能简单点,其他程序另外还需要判断用户的输入不能超过7,如果输入8或者9要报错,(python没这个问题, 如果输入7就是星期天,8就是星期一以此类推)

这里我们要用到的是python的内置模块,time模块。

顾名思义,这是一个和时间有关的模块。

导入time模块。

import time

第一步要做的就是从1970纪元后到目前为止度过的秒数(浮点类型)。

其实想要获得这个秒数,只有一个方法,就是通过time模块内的time方法来获得。

即timetime()

但是,timetime返回的这个高精度浮点数我们并不能准确的得到我们想要的当前时间。我们只知道这是从1970到目前为止已经过了多少秒。

这里我们还需要使用一个方法来把秒数变成当前的时间戳。

这时我们就要用到另外一个方法,localtime方法,该方法的参数为我们刚刚所说的1970年到目前为止的秒数,返回值为一个叫struct_time结构体,如果不懂什么叫结构体,没关系,也可以理解为localtime方法返回一个struct_time对象。

timelocaltime(timetime())

可以看到localtime方法的返回结果,从单词的字面上我们也能大概了解到:

前缀tm为time,year为年份,mon为月份,mday为日,hour为时,min为分,sec为秒等等

但是我们想要的并不是这种结果,我们想要获得一个易于理解的数据。

常见的asctime类型,例如显示结果如Wed Feb 13 15:46:11 2018

如果小伙伴常用Linux对这种类型显然不会陌生,在linux上,我们使用date命令,不进行时间格式化的话,就会输出这种形式的时间。

例如小编这里虚拟机内的linux,运行date的输出结果如图。

格式为:星期几 月份 日数 时:分:秒 年份

注意的是,在linux上的date默认会输出时间区域,例如默认的美国时间EDT,或者修改为我们大陆的北京时间CTS。

这里提供两种方法进行struct_time数据格式化。

第一种就是第4步讲述的asctime格式,我们调用time模块内的asctime方法即可,参数为struct_time对象数据,返回字符串,即asctime格式当前日期时间。

timeasctime(timelocaltime(timetime()))

'Wed Apr  4 20:27:15 2018'

翻译成中文是:

星期三 四月 4 20:27:15 2018

还有一个数据格式化的方法是time模块内提供的strftime方法。

str timestrftime(格式转化字符,时间戳)

格式转化字符如下:

%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 当前时区的名称

%% %号本身

这里常用的小编就进行了加粗,其实常用的就是这几个。一定要记住的是:

%Y = 年,%m = 月,%d = 日,%H = 24制时,%M = 分,%S = 秒。

那么知道转化符的意义之后,我们做起来就很简单了。

例如我们可以获得当前时间和日期,然后获得当前是一年中的第几天,然后获得当前的时区

timestrftime("当前日期:%Y年%m月%d日",timelocaltime(timetime()))

#获得当前日期

timestrftime("当前时间:%H时%M分%S秒",timelocaltime(timetime()))

#获得当前时间

timestrftime("今天是%Y年的第%j天,时区为%Z",timelocaltime(timetime()))

代码只能在python3中有效运行,python2需要使用print输出(否则中文会变成16进制字符)。

python2运行如下,加上print即可:

print(timestrftime("当前日期:%Y年%m月%d日",timelocaltime(timetime())))

#获得当前日期

print(timestrftime("当前时间:%H时%M分%S秒",timelocaltime(timetime())))

#获得当前时间

print(timestrftime("今天是%Y年的第%j天,时区为%Z",timelocaltime(timetime())))

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 :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)

以上就是关于python 求日期全部的内容,包括:python 求日期、用python实现计算黑色星期五、python 获取某个月的全部日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9310222.html

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

发表评论

登录后才能评论

评论列表(0条)

保存