【基础入门题012】给定日期是该年的第几天

简介: 【基础入门题012】给定日期是该年的第几天

【基础入门题】2021.11.08  

给定日期是该年的第几天?



比如:

输入“2020/03/02"或者“2020-03-02”,则输出:62;

输入“2021/03/02"或者“2021-03-02”,则输出:61;

输入“2021/11/08"或者“2021-11-08”,则输出:312;

输入“2021/11-08"或者“2021/11-08”,格式错输出为空。


编程语言:包括但不限于Python

题目来源:派森特给站每日刷题频道


方法一:累加每个月的天数列表


def DaysofYear(strDate):
  Days = [31,28,31,30,31,30,31,31,30,31,30,31]
  if strDate.count('/')==2:
    try: listDate = list(map(int,strDate.split('/')))
    except: listDate = None
  elif strDate.count('-')==2:
    try: listDate = list(map(int,strDate.split('-')))
    except: listDate = None
  else:
    listDate = None
  if listDate:
    year,month,day = listDate
    if year%4==0 and year%100!=0 or year%400==0:
      Days[1] = 29
    return sum(Days[:month-1])+day
  else:
    return None
>>> DaysofYear('2020-03-02')
62
>>> DaysofYear('2021-03-02')
61
>>> DaysofYear('2021/11/08')
312
>>> DaysofYear('2021/11-08')
>>> 



方法二:使用datetime库

def DaysofYear(strDate):
  from datetime import date
  try: d = [int(i) for i in strDate.split('/')]
  except:
    try: d = [int(i) for i in strDate.split('-')]
    except: return None
  if len(d)!=3: return None
  d1 = date(d[0],d[1],d[2])
  d2 = date(d[0],1,1)
  diff = d1 - d2
  return diff.days + 1
>>> DaysofYear('2021-03-02')
61
>>> DaysofYear('2020-03-02')
62
>>> DaysofYear('2021/11/08')
312
>>> DaysofYear('2021/11-08')
>>> 
目录
相关文章
|
8月前
leetcode-1154:一年中的第几天
leetcode-1154:一年中的第几天
41 0
|
8月前
|
算法
leetcode-1185:一周中的第几天
leetcode-1185:一周中的第几天
58 0
【知识分享】Java获取当前日期是第几周且本周是几号到几号
【知识分享】Java获取当前日期是第几周且本周是几号到几号
223 0
|
3月前
蓝桥杯真题time模块详解 | 顺子日期 星期一
蓝桥杯真题time模块详解 | 顺子日期 星期一
|
7月前
|
算法 Java
【无标题】2023.10.16-22 本周学习总结(周日)
【无标题】2023.10.16-22 本周学习总结(周日)
刷题第一天
我从简单到难,一起走上漫漫刷题路! 爱你们,我会持续在我的博客中更新我每天刷题的内容! 相互交流,爱你们哦!
|
算法 C++
蓝桥杯练习题七 - 第几天(c++)
蓝桥杯练习题七 - 第几天(c++)
135 0
蓝桥杯练习题七 - 第几天(c++)
LeetCode Day01:一年中的第几天
LeetCode Day01:一年中的第几天
131 0
1154 一年中的第几天 leetcode
1154 一年中的第几天 leetcode
107 0