码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 输入一个日期,包括年、月和日,计算该日期是这一年的第几天


    问题:输入一个日期,包括年、月和日,计算该日期是这一年的第几天。

    思路:输入年月日之后,这是这一年中的第几天 = 之前月数的总天数+当月的日子

    先想一下如果是手动算的话需要怎么算?

    通常的年份的2月份都是28天,如果是闰年,闰年的2月份是29天。

    比如输入一个2022-10-13

        计算应该是:1(31)+2(28或者29天)+3(31)+4(30)+5(31)+6(30)+7(31)+8(31)+9(30)+13

    比如输入一个2022-07-13

        计算应该是:1(31)+2(28或者29天)+3(31)+4(30)+5(31)+6(30)+13

    比如输入一个2022-03-13

        计算应该是:1(31)+2(28或者29天)+13

    可以看到这个是一个月份的累加,中间没有间断,如果要计算10月的就要从1月加到9月。

    这个适合python中的 range()函数,然后里面是一个循环的累加

    方法1:

    1. #
    2. date=input("请输入年月日(格式举例:2000-01-05):")
    3. year=int(date[:4])
    4. month=int(date[5:7])
    5. day=int(date[8:10])
    6. f_run=[31,28,31,30,31,30,31,31,30,31,30,31]   #通常的年的每个月的天数
    7. tall_day=0
    8. #判断年是否闰年?
    9. if (year%4==0 and year%100!=0 or year%400==0) and month>2:
    10.         for i in range(month-1):
    11.             tall_day+=f_run[i]
    12.         tall_day+=1            #如果是闰年并且是3月份以后,需要增加1天       
    13. else:
    14.         for i in range(month-1):
    15.             tall_day+=f_run[i]           
    16. tall_day+=day
    17. print(date+"是当年的第"+str(tall_day)+"天")

    例子:输入:2020-04-19,输出:110天

    输入:2022-02-03,输出:34天

    输入:2022-03-15,输出:74天

    输入:2000-03-01,输出:61天

    方法2: 通过datetime库函数实现

    1. import datetime
    2. date=input("请输入年月日(格式举例:2000-01-05):")
    3. year=int(date[:4])
    4. month=int(date[5:7])
    5. day=int(date[8:10])
    6. date1 = datetime.date(year=int(year), month=int(month), day=int(day))
    7. date2 = datetime.date(year=int(year), month=1, day=1)
    8. tall_day = (date1 - date2).days + 1
    9. print(date+"是当年的第"+str(tall_day)+"天")

    方法3:通过datetime库函数实现

    1. from datetime import datetime
    2. cdate=input("请输入年月日(格式举例:2000-01-05):")
    3. end=datetime.strptime(cdate, "%Y-%m-%d")
    4. start = datetime(end.year,1,1)
    5. tall_day = (end - start).days + 1
    6. print(cdate+"是当年的第"+str(tall_day)+"天")

  • 相关阅读:
    Linux 简介 & 启动过程
    Elasticsearch:如何在不更新证书的情况下为集群之间建立互信
    刨根问底 Kafka,面试过程真好使
    在 CSS 中,怎样有效地优化样式表的加载性能,减少页面加载时间?
    简单宠物网页设计作业 静态HTML动物介绍网页作业 DW宠物网站模板下载 大学生简单野生动物网页作品代码
    安卓手机APP开发__媒体开发部分__网络栈
    <5>【深度学习 × PyTorch】“自动微分”机制 | 通俗理解 pytorch中的autograd、backward | 实例详解tensors、grad_tensors
    向日葵资深产品总监技术分享:“国民远控”如何在AD域环境下应用
    常见的java话题
    如何使用postman调用若依系统接口(报错401,认证失败,无法访问系统资源)
  • 原文地址:https://blog.csdn.net/greatau/article/details/133559103
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号