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程序抓取新浪在国内的所有IP的教程
May 04 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
Python实现统计代码行的方法分析
Jul 12 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
python 反向输出字符串的方法
Jul 16 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
Apr 21 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
python字典按照value排序方法
Dec 28 Python
python os.listdir()乱码解决方案
Jan 31 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
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
幼师专业毕业生自荐信
2013/09/29 职场文书
大学生简历中个人的自我评价
2013/10/06 职场文书
办理暂住证介绍信
2014/01/11 职场文书
物流专员岗位职责
2014/02/17 职场文书
高二学生评语大全
2014/04/25 职场文书
2014年三万活动总结
2014/04/26 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
关于开学的感想
2015/08/10 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python