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

liftword7个月前 (12-16)技术文章72

前言

正常人的思路通常是先判断闰年和平年,然后将每个月的天数相加再加上输入的天数。在平年中,有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写入Excel表格模块:xlwt介绍

之前介绍过读取Excel表格模块 xlrd,但是 xlrd 模块只能对Excel表格进行读取,即只能获得数据,但是不能对Excel表格进行增加、修改、插入等操作,若想对Excel表格进行增加、修改、插...

一日一技:Python中的timeit()方法

timeit()方法python中的timeit()方法, 它用于获取代码的执行时间。该库将代码语句运行一百万次,并提供从集合中花费的最短时间。这是一种有用的方法,有助于检查代码的性能。语法如下:ti...

如何在Python中将字符串转换为DateTime对象

从原始数据中获取日期时,它们通常采用字符串对象的形式。但在此表单中,您无法访问日期的属性,如年、月等。这个问题的解决方案是将字符串对象解析(或转换)为日期时间对象,以便Python可以将其识别为日期。...