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可变参数用法实例分析
Apr 02 Python
Python字符串处理实现单词反转
Jun 14 Python
python3 发送任意文件邮件的实例
Jan 23 Python
Python socket实现简单聊天室
Apr 01 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
Python 可迭代对象 iterable的具体使用
Aug 07 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 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
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
JavaScript 数组详解
2013/10/10 Javascript
继续学习javascript闭包
2015/12/03 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
更新修改后的Python模块方法
2019/03/03 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
浅析NumPy 切片和索引
2020/09/02 Python
基于python实现坦克大战游戏
2020/10/27 Python
网络信息管理员岗位职责
2014/01/05 职场文书
项目合作计划书
2014/01/09 职场文书
小学三年级学生评语
2014/04/22 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
财务负责人任命书
2014/06/06 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
预备党员转正材料
2014/12/19 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
详解Vue router路由
2021/11/20 Vue.js