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类型强制转换long to int的代码
Feb 10 Python
python 获取本机ip地址的两个方法
Feb 25 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
Apr 08 Python
Python实现线程池代码分享
Jun 21 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
Flask数据库迁移简单介绍
Oct 24 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
python爬虫获取百度首页内容教学
Dec 23 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
python中random.randint和random.randrange的区别详解
Sep 20 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
英语专业个人求职信范文
2014/02/01 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
保密工作整改报告
2014/11/06 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书