Python编程实现输入某年某月某日计算出这一天是该年第几天的方法


Posted in Python onApril 18, 2017

本文实例讲述了Python编程实现输入某年某月某日计算出这一天是该年第几天的方法。分享给大家供大家参考,具体如下:

#基于 Python3

一种做法:

def is_leap_year(year): # 判断闰年,是则返回True,否则返回False
  if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    return True
  else:
    return False
def function1(year, month, day): # 计算给定日期是那一年的第几天
  leap_year = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  no_leap_year = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  if is_leap_year(year):
    result = sum(leap_year[:month - 1]) + day
  else:
    result = sum(no_leap_year[:month - 1]) + day
  return result

但是如果是你自己遇到了这样的需求,那么就没必要这么复杂了。因为Python内置了完善的时间和日期处理函数。

import datetime
import time
def function2(year, month, day): # 直接使用Python内置模块datetime的格式转换功能得到结果
  date = datetime.date(year, month, day)
  return date.strftime('%j')

需要注意的是,上面的写法里函数的参数分别是年月日的整数,如果你想传入字符串,比如"2016-10-1",那就需要先对字符串做处理了。

同样的,也可以自己做或者用内置函数。

# 假如输入格式为字符串(比如从命令行读入字符串2016-10-1),则需要先对输入内容进行处理
_input = '2016-10-1'
_year1 = int(_input.split('-')[0])
_month1 = int(_input.split('-')[1])
_day1 = int(_input.split('-')[2])
# 当然你也可以用datetime的内置方法进行格式处理
t = time.strptime(_input, '%Y-%m-%d')
_year2 = t.tm_year
_month2 = t.tm_mon
_day2 = t.tm_mday

下面是完整的代码,测试"2016-10-1"的结果均为275。

import datetime
import time
def is_leap_year(year): # 判断闰年,是则返回True,否则返回False
  if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    return True
  else:
    return False
def function1(year, month, day): # 计算给定日期是那一年的第几天
  leap_year = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  no_leap_year = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  if is_leap_year(year):
    result = sum(leap_year[:month - 1]) + day
  else:
    result = sum(no_leap_year[:month - 1]) + day
  return result
def function2(year, month, day): # 直接使用Python内置模块datetime的格式转换功能得到结果
  date = datetime.date(year, month, day)
  return date.strftime('%j')
print(function1(2016, 10, 1))
print(function2(2016, 10, 1))
# 假如输入格式为字符串(比如从命令行读入字符串2016-10-1),则需要先对输入内容进行处理
_input = '2016-10-1'
_split = _input.split('-')
_year1 = int(_split[0])
_month1 = int(_split[1])
_day1 = int(_split[2])
print(function1(_year1, _month1, _day1))
print(function2(_year1, _month1, _day1))
# 当然你也可以用datetime的内置方法进行格式处理
t = time.strptime(_input, '%Y-%m-%d')
_year2 = t.tm_year
_month2 = t.tm_mon
_day2 = t.tm_mday
print(function1(_year2, _month2, _day2))
print(function2(_year2, _month2, _day2))
# 后面发现我为了编函数写复杂了,如果输入是字符串其实一句话就好
import time
_input = '2016-10-1'
# 详见Python日期和字符串格式互相转换 https://3water.com/article/66019.htm
t = time.strptime(_input, '%Y-%m-%d')
print(time.strftime('%j',t))

PS:这里再为大家推荐几款关于日期与天数计算的在线工具供大家使用:

在线日期/天数计算器:
http://tools.3water.com/jisuanqi/date_jisuanqi

在线万年历日历:
http://tools.3water.com/bianmin/wannianli

在线阴历/阳历转换工具:
http://tools.3water.com/bianmin/yinli2yangli

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python中使用OpenCV进行人脸检测的例子
Apr 18 Python
Python中暂存上传图片的方法
Feb 18 Python
Python实现高效求解素数代码实例
Jun 30 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
python迭代dict的key和value的方法
Jul 06 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
python中单下划线(_)和双下划线(__)的特殊用法
Aug 29 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
浅析python递归函数和河内塔问题
Apr 18 #Python
Python使用正则表达式实现文本替换的方法
Apr 18 #Python
Python外星人入侵游戏编程完整版
Mar 30 #Python
Python随机数用法实例详解【基于random模块】
Apr 18 #Python
django使用图片延时加载引起后台404错误
Apr 18 #Python
使用Python3制作TCP端口扫描器
Apr 17 #Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 #Python
You might like
推荐一篇入门级的Class文章
2007/03/19 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
php实现短信发送代码
2015/07/05 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
介绍一下Linux文件的记录形式
2012/04/18 面试题
园林毕业生自我鉴定范文
2013/12/29 职场文书
家长对孩子的寄语
2015/02/26 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
小学教师见习总结
2015/06/23 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
MySQL数据迁移相关总结
2021/04/29 MySQL
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android