日期函数

用函数实现,输入某年某月某日,判断这一天是这一年的第几天(闰年考虑在内
第一种:

list=[31,60,91,121,152,182,213,244,274,305,335,366]
def date(year,mouth,day):
   '''

   :param year:#输入年份
   :param mouth:#输入月份
   :param day:#输入日期
   :return:
   '''

   if 0<mouth<13 and 0<day<32:
      if mouth == 1:
         days = day
         print(days)
          #2月份时,分闰年和平年讨论并且限制日数
      if mouth==2:
         if day<30:
            if year % 4 == 0 or year % 100 != 0 and year % 400 == 0:
               print('日期存在')
               print('闰年')
               days = list[mouth - 2] + day
               print(days)
            else:

               if day==29:
                  print('日期错误')
               if day<=28:
                  print('日期存在')
                  print('平年')
                  days = list[mouth - 2] + day
                  print(days)
         else:
            print('日期错误')
              #当月份超过三月份时,也分润年和平年讨论,但平年日数要减1。
      if mouth>=3:
         if year % 4 == 0 or year % 100 != 0 and year % 400 == 0:
            print('日期存在')
            print('闰年')
            days = list[mouth - 2] + day
            print(days)
         else:
            print('日期存在')
            print('平年')
            days = list[mouth - 2] + day-1
            print(days)
   else:
      print('日期输入错误')
#date(2000,2,29)
date(2001,2,28)

第二种

def year(y):
    '''
    定义判断2月份天数的函数
    :param y: 输入的年份
    :return: 2月的天数
    '''
    if (y%4 == 0 and y%100 != 0) or (y%400 == 0):
        return  29
    else:
        return  28

def daynum(day):
    '''
    定义判断输入的某一天是这一年的第几天
    :param day:输入的年月日字符串
    :return:返回的是输入的某一天是这一年的第几天
    '''
    try:
        list_day = day.split('.') #对输入的字符串进行切片并生成列表
        y = int(list_day[0]) #将列表内元素的字符串类型转成数字类型
        m = int(list_day[1])
        d = int(list_day[2])
        mouth2 = year(y)
        list_mouth = [31,mouth2,31,30,31,30,31,31,30,31,30,31]
        # 判断输入的2月份的 月和日 是否符合要求 如果符合就返回天数
        if m == 2 and (0 <d<= mouth2):
            day_num = sum(list_mouth[:(m - 1)]) + d
            return day_num
        # 判断有31天的月份 输入的日期是否符合要求 如果符合就返回天数
        elif (m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12) and (0 <d <= 31):
            day_num = sum(list_mouth[:(m - 1)]) + d
            return day_num
        # 判断有30天的月份 输入的日期是否符合要求 如果符合就返回天数
        elif (m==4 or m==6 or m==9 or m==11) and (0 <d <= 30):
            day_num = sum(list_mouth[:(m - 1)]) + d
            return day_num
        else:
            return '请输入正确的日期'
    except:
        return '请输入正确的格式'


# 调用函数
day1 = input('请输入年月日如1999.1.1:')
number = daynum(day1)
print(number)
--------------------- 
作者:锲启 
来源:CSDN 
原文:https://blog.csdn.net/weixin_44166997/article/details/88316766 
版权声明:本文为博主原创文章,转载请附上博文链接!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值