题目:输入某年某月某日,判断这一天是这一年的第几天?
【程序分析】:以3月9日为例,应该先把前两个月的加起来,然后再加上9天即本年的第几天,需要考虑平年和闰年的情况。
1、利用python自带time库计算
#coding=utf-8
from time import *
sd=raw_input("input date(format:20170101):")
days=strptime(sd,'%Y%m%d')[7]
print days
2、利用python自带datetime,计算日期与年初之间的天数
import datetime
sd=raw_input("input date(format:yyyymmdd):")
year=str(datetime.datetime.strptime(sd,'%Y%m%d').year)
d0=datetime.datetime.strptime(year+'0101','%Y%m%d')
sdate=datetime.datetime.strptime(sd,'%Y%m%d')
days=(sdate-d0).days+1
print days
3、根据【程序分析】,累计计算天数
d1=[31,28,31,30,31,30,31,31,30,31,30,31]
d2=[31,29,31,30,31,30,31,31,30,31,30,31]
sdate=raw_input("input date(format:yyyymmdd):")
year=int(sdate[:4])
month=int(sdate[4:6])
day=int(sdate[6:8])
if year%100==0:
if year%400==0:
d=d2
else:
d=d1
else:
if year%4==0:
d=d2
else:
d=d1
days=sum(d[0:month-1])+day
print days
4、利用dict实现
#coding=utf-8
dict = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
sd=raw_input("input date(format:yyyymmdd):")
year=int(sd[:4])
month=int(sd[4:6])
day=int(sd[6:8])
days=0
for i in range(1,month):
days+=dict[i]
if ((year%4==0 or year%400==0) or year%100==0) and month>2: #闰年且月份为2以后
days+=day+1
else:
days+=day
print days