1、1)计算给定的年月日时间 首先要判断是否是闰年闰年的判断 有三个条件,实际中 忘掉year % 400 == 0 的条件2)使用numpay的cumsum提前把累加和计算好,后面就方便了否则 要麻烦很多!import numpy as npymd = input('输入年月日(yyyy-mm-dd) :')year = int(ymd[0:4]) # 获取年份mon = int(ymd[5:7]) # 获取月份day = int(ymd[8:]) # 获取日print(year, mon, day)pingYear = [31,28,31,30,31,30,31,31,30,31,30,31]RunYear = [31,29,31,30,31,30,31,31,30,31,30,31]
2、使用numpay的cumsum 计算列表的累加和,方便计算!sumSpan =0;cumpingYear = np.array(pingYear).cumsum()cumRunYear = np.array(RunYear).cumsum()# print(np.array(pingYear))# print(np.array(pingYear).sum())print(cumpingYear)print(cumRunYear)
3、if(mon == 1): 如果是一月 直接输出day即可 sumSpan = day print(sumSpan)else: if (year % 4 ==0 and year % 100 != 0) or (year % 400 == 0): sumSpan = cumRunYear[mon - 2] 闰年: 按cumRunYear取值 # print(sumSpan) sumSpan += day print(sumSpan) else: sumSpan = cumpingYear[mon - 2] 平年: 按cumpingYear取值 # print(sumSpan) sumSpan += day print(sumSpan)
4、输入年月日(yyyy-mm-dd) :>? 2019-03-012019 3 1[ 31 59 90 120 151 181 212 243 273 304 334 365][ 31 60 91 121 152 182 213 244 274 305 335 366]60
5、再输入2019-01-30 验证1月算法正确性输入年月日(yyyy-mm-dd) :>? 2019-01-302019 1 30[ 31 59 90 120 151 181 212 243 273 304 334 365][ 31 60 91 121 152 182 213 244 274 305 335 366]30
6、小结:优点: 使用np计算累加和,方便计算缺点: 缺乏对输入数据的判断,实际使用要加入数据合法性判断比如: 输入2019-02-31 本程序不会判断31的合法性,这点要注意。