Python编程:计算当前日期是一年中的第几天

liftword5个月前 (12-16)技术文章63

前言

正常人的思路通常是先判断闰年和平年,然后将每个月的天数相加再加上输入的天数。在平年中,有7个月每月都有31天,这几个月分别是1月、3月、5月、7月、8月、10月和12月。我们可以定义两个数组,一个用于存放闰年,另一个用于存放平年。

对于计算每个月的天数,我们可以使用一个简单的算法。首先,我们知道2月份的天数在闰年和平年是不同的,所以需要单独处理。对于其他月份,可以使用一个循环来累加每个月的天数

完整代码如下


def isleap(year):
   if(year%4==0 and year%100 != 0) or year%400==0: # 闰年
       # print(f"{year}年是闰年")
       return 1
   else:
       # print(f"{year}年是平年")
       return 0




def calc_day(year,month,day):
   leap = isleap(int(year))
   if leap == 1:
      total_day = sum(leap_list[:int(month)-1]) + int(day)
      print(f"闰年{raw_data}是第{total_day}天")
   else:
      total_day = sum(month_list[:int(month)-1]) + int(day)
      print(f"平年{raw_data}是第{total_day}天")




if __name__=='__main__':
  
   month_list = [31,28,31,30,31,30,31,31,30,31,30,31] # 平年每月天数
   leap_list =  [31,29,31,30,31,30,31,31,30,31,30,31] # 闰年每月天数


   raw_data = input("请输入年月日格式如2023-11-12:")
   year ,month ,day = raw_data.split("-")
   calc_day(year,month,day)
   


在代码里面我们定义了计算闰年跟平年的函数 isleap(year)它输入年,然后返回闰年是1,平年是0,还定义了一个计算天数的函数calc_day(year,month,day),它接收3个参数,年,月,日,最后面还在if __name__=='__main__':中定义两个数据,用来存放每个月天数的,估计大部分人都是这样的写,但是这样写的话一点都不Python,下面教大家Python的正确写法

完整代码如下

import datetime
raw_data = input("请输入年月日格式如2023-11-12:")
year ,month ,day = raw_data.split("-")
date = datetime.date(int(year), int(month), int(day))
total_day = date.timetuple().tm_yday
print(f"{raw_data}是第{total_day}天")

以上代码使用python 自带的库,datetime.timetuple() 是 Python 中的一个方法,用于将 datetime 对象转换为一个包含年、月、日、时、分、秒的元组。这个方法返回的元组中的元素顺序为:年、月、日、时、分、秒、一周中的第几天(0-6,0 表示星期一)、一年中的第几天(1-366)以及是否为夏令时(-1、0 或 1)。

相关文章

让时间变得简单易用:深入了解 Python 的 dateutil 库

在 Python 编程的世界里,处理日期和时间的数据是一个常见却复杂的任务。谁不想让这一过程更加简单呢?今天,我们要聊的就是一个超级实用的库——dateutil。它能帮助你轻松应对各种与时间相关的问题...

了解何时使用函数以及何时在 Python 中选择类

Python 以其简单性和灵活性而闻名,它提供了多种构建代码的方法,其中函数和类是开发人员工具包中最常见的两种工具。函数和类在 Python 编程中都有其位置,但知道何时使用一个而不是另一个是编写高...

Python中日期、时间处理Arrow类库如何使用

今天和大家分享一下python中如何处理日期、时间、时区,我们可以用到arrow类库来方便的对日期,时间操作,下面来开始我们今天的分享。Arrow是一个用于处理日期、时间和时区的Python类库,它的...

Python编程基础:时间time模块 python time_ns

time模块提供了与时间相关的函数,本文介绍time模块的常用函数。获取时间戳:time()函数时间戳指自1970年1月1日0点0分0秒以来的总秒数(浮点数)。import time print(t...