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标准库之循环器(itertools)介绍
Nov 25 Python
python和bash统计CPU利用率的方法
Jul 10 Python
Python中max函数用法实例分析
Jul 17 Python
分享Python字符串关键点
Dec 13 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
windows下python和pip安装教程
May 25 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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
网页常用特效代码整理
2006/06/23 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
python缩进区别分析
2014/02/15 Python
Python标准库内置函数complex介绍
2014/11/25 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
python opencv之分水岭算法示例
2018/02/24 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
测量实习生自我鉴定
2013/09/19 职场文书
大学四年规划书范文
2013/12/27 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
升旗仪式主持词
2014/03/19 职场文书
公司演讲稿开场白
2014/08/25 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
税务会计岗位职责
2015/04/02 职场文书
《三国志》赏析
2019/08/27 职场文书
SQL Server 中的事务介绍
2022/05/20 SQL Server
Python中的 No Module named ***问题及解决
2022/07/23 Python