多语言展示
当前在线:261今日阅读:91今日分享:37

给定一个日期计算该日期在年内是第几天(python)

计算一个给定年月日在该年内是第几天看似简单,但实际在限定时间内做出正确计算的,又似乎没有那么理想,现在把python计算的过程予以描述。
工具/原料
1

python numpy

2

pycharm windows7

方法/步骤
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)

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的合法性,这点要注意。

注意事项
1

使用numpy的累加和计算 大大方便计算

2

程序不具备对输入数据合法性的判断

3

注意闰年的判断有三个条件

推荐信息