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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
Python中的默认参数详解
Jun 24 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
Python_LDA实现方法详解
Oct 25 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
Python 使用双重循环打印图形菱形操作
Aug 09 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 Python
Python 解决空列表.append() 输出为None的问题
May 23 Python
Python内置数据类型中的集合详解
Mar 18 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变量存储的详解
2013/06/13 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
javascript模拟命名空间
2015/04/17 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
github配置使用指南
2014/11/18 Python
Python中内建函数的简单用法说明
2016/05/05 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
django自带调试服务器的使用详解
2019/08/29 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
教师党员思想汇报
2014/01/06 职场文书
初一体育教学反思
2014/01/29 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python