我是靠谱客的博主 机智洋葱,最近开发中收集的这篇文章主要介绍python 根据年月日,计算是这一年中的第几天,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

利用python计算某一天是这一年中的第几天,例如,给定年份= 2019年,月份= 1,日期= 3,则返回3;因为2019-01-03日期是2019年的第3 天。

首先,我们要知道闰年、平年怎么区分:

非整百年:能被4整除的为闰年。(如2004年就是闰年,2001年不是闰年);

整百年:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)。

对于公元前和数值很大的年份,我们这里不做讨论。下面我们来写一下代码:

我按照功能把代码分成了几部分,首先定义几个会用到的常量:

1 month_of_days31 = [1, 3, 5, 7, 8, 10, 12]
2 month_of_days30 = [4, 6, 9, 11]
3 feb_month = 2

我们需要判断一下当前年份是不是闰年: 

1 def is_leap_year(year):
2
"""
3 
判断当前年份是不是闰年,年份公元后,且不是过大年份
4 
:param year: 年份
5 
:return: True 闰年, False 平年
6
"""
7
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
8
return True
9
return False

然后,对年、月、日参数做一下参数校验

 1 def validate_param(year, month, day):
 2
"""
 3 
参数校验
 4 
:param year: 年份
 5 
:param month: 月份
 6 
:param day: 日期
 7 
:return: error_msg 错误信息,没有为空
 8
"""
 9
error_msg = u''
10
if not isinstance(year, int) or year < 1:
11
error_msg = u'年份输入不符合要求'
12
if not isinstance(month, int) or month < 1 or month > 12:
13
error_msg = u'月份输入不符合要求'
14
if not isinstance(day, int) or day < 1 
15
or (month in month_of_days31 and day > 31) 
16
or (month in month_of_days30 and day > 30) 
17
or (month == feb_month and (day > 29 if is_leap_year(year) else day > 28)):
18
error_msg = u'日期输入不符合要求'
19
return error_msg

最后,对年、月、日进行计算:

 1 def get_day_of_year(year, month, day):
 2
"""
 3 
获取一个日期在这一年中的第几天
 4 
:param year: 年份
 5 
:param month: 月份
 6 
:param day: 日期
 7 
:return: 在这一年中的第几天
 8
"""
 9
# 参数校验
10
error_msg = validate_param(year, month, day)
11
if error_msg:
12
return error_msg
13
14
if month == 1:
15
return day
16
17
if month == 2:
18
return day + 31
19
20
days_of_31_num = 0
21
days_of_30_num = 0
22
# 31天月份数
23
for days_of_31 in month_of_days31:
24
if days_of_31 < month:
25
days_of_31_num += 1
26
else:
27
break
28
29
# 30天月份数
30
for days_of_30 in month_of_days30:
31
if days_of_30 < month:
32
days_of_30_num += 1
33
else:
34
break
35
36
return days_of_31_num * 31 + days_of_30_num * 30 + (29 if is_leap_year(year) else 28) + day

 

转载于:https://www.cnblogs.com/iamls/p/10291896.html

最后

以上就是机智洋葱为你收集整理的python 根据年月日,计算是这一年中的第几天的全部内容,希望文章能够帮你解决python 根据年月日,计算是这一年中的第几天所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部