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实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
Python中join和split用法实例
Apr 14 Python
详解Python文本操作相关模块
Jun 22 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
详解用python写一个抽奖程序
May 10 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
Python绘图实现显示中文
Dec 04 Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 Python
用Python进行websocket接口测试
Oct 16 Python
详解python的super()的作用和原理
Oct 29 Python
python生成随机数、随机字符、随机字符串
Apr 06 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
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
three.js实现3D视野缩放效果
2017/11/16 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
快速了解python leveldb
2018/01/18 Python
Python变量赋值的秘密分享
2018/04/03 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
Python字符串三种格式化输出
2020/09/17 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
升职自荐书范文
2013/11/28 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
房屋出售授权委托书
2014/10/12 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
委托书格式要求
2015/01/28 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
行政处罚听证告知书
2015/07/01 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js