python给出年/月/日计算是此年的多少天?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python给出年/月/日计算是此年的多少天?相关的知识,希望对你有一定的参考价值。

编写函数isLeap(year)用于判断year是否是闰年,若是闰年则返回True,否则返回False。

编写函数days(year,month)用于计算year所在的month的天数,days(year,month)函数需要调用isLeap()函数以帮助判断2月份的天数(year若不是闰年,返回28,否则返回29) 要求程序能根据用户输入的日期,计算该日期是这一年的第几天。

import datetime
import calendar
year = int(input('请输度入4位数字的年份:'))  # 获取年份
month= int(input('请输入月份1到12之间:'))  # 获取月份
day= int(input('请输入日份1到31之间:'))  # 获取“日”

if(calendar.isleap(year)==True):
print('闰年')
else:
print('平年')
if(month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12):
print('31天')
elif (month == 4 or month == 6 or month == 9 or month == 11 ):
print('30天')
elif month == 2 and ((year % 4==0 and year % 100!=0) or (year % 400==0)):
print('29天')
else:
print('28天')

targetDay = datetime.date(year, month, day)  # 将输入的日期专格式化成标准的日期
dayCount = targetDay - datetime.date(targetDay.year - 1, 12, 31)  # 减去上一属年最后一天
print('%s是%s年的第%s天。' % (targetDay, year, dayCount.days))



参考技术A

输入格式没有,我就权当格式是2020/5/12.

本回答被提问者采纳

如何计算两个(年-月-日)中间的间隔天数

给出任意两个时间,计算其间隔天数应该如何进行?
思路一:
以日期较小的一个为参考对象,然后将日期一天天的加上去,直到和第二个日期完全相等,设置一个计数器(day++)来统计天数。
思路二:
上边的问题是将整个问题视为一个整体进行解决,那么正是因为问题的复杂性,为了使用编程来更好的模块化解决,我们引入参考日期(1900-01-01)。将两个日期都与参考日期进行对比,计算出天数差。而后根据天数差做一个减法,得到二者之间的天数差。
思路三:
在思路二的基础上进一步进行改进。(思路二存在的问题是若询问的日期是小于参考日期的,则会出现负数,这将给问题的解决带来不必要的麻烦)我们将两个要查询的日期都和他们对应的年份的一月一号作为基准的参考日期,然后计算出三个天数差(其中有两个天数差的计算方法是一样的),最后得出结果。
思路……(欢迎留言讨论)
方案三解决步骤:
首先要能够判断出对应的年份是否是闰年(闰年是364天,否则为365天)
而后要能够求出对于任意所给日期,找出它和自己对应年份一月一日的日期差。
最后求得三个差值,计算出真正的日期差。
下面是用C语言简单的实现的一个处理:
技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 using namespace std;
 5 
 6 int tianxia[2][12]={
 7     {31,28,31,30,31,30,31,31,30,31,30,31},
 8     {31,29,31,30,31,30,31,31,30,31,30,31}
 9 };
10 
11 int isPrime(int year){
12     if(year%4==0&&year%100!=0 || year%400==0)
13         return 1;
14     else
15         return 0;
16 }
17 
18 int main()
19 {
20     int a,b;
21     scanf("%d%d",&a,&b);
22     if(a<b)
23         a^=b;b^=a;a^=b;
24     ///经过上边的操作后,日期a将大于日期b
25     int yeara=a/10000;
26     int moutha=(a%10000)/100;
27     int daya=(a%100);
28 
29     int yearb=b/10000;
30     int mouthb=(b%10000)/100;
31     int dayb=(b%100);
32 
33     int day1,day2,day3;
34     day1=day2=day3=0;
35 
36     for(int i=0;i<moutha-1;i++){
37             printf("%d : %d\n",i+1,tianxia[isPrime(yeara)][i]);
38         day1+=tianxia[isPrime(yeara)][i];
39     }
40     day1+=daya-1;
41 
42     for(int i=0;i<mouthb-1;i++){
43             printf("%d : %d\n",i+1,tianxia[isPrime(yearb)][i]);
44         day2+=tianxia[isPrime(yearb)][i];
45     }
46     day2+=dayb-1;
47 
48     for(int i=yearb;i<yeara;i++){
49         if(isPrime(i)==0)day3+=365;
50         else day3+=366;
51     }
52     int ans = day3+day1-day2;
53     printf("The ans is :%d  %d  %d  %d",ans,day1,day2,day3);
54     return 0;
55 }
简单解决代码

 

以上是关于python给出年/月/日计算是此年的多少天?的主要内容,如果未能解决你的问题,请参考以下文章

2018/12/28日!我用云闪付还款信用卡,结果银行卡的钱扣了,却信用卡的钱没到账,显示失败

vb.net vs2005里面的如何把DateTimePicker控件里面的显示的时间去掉,也就是我只要显示年/月/日

Linux 系统磁盘分区知识(2017年8月30日 11:47:02)

2018年7月9日 股票大数据分析报告

2021-12-26 /etc/rc.local 和systemctl设置

C++/CLI的历史