【问题标题】:trouble calculating the amount of Sundays inbetween 2 dates计算两个日期之间星期天的数量时遇到问题
【发布时间】:2022-09-24 17:25:45
【问题描述】:

我被要求创建一个程序来计算两个日期之间的星期天数!我一直在搜索大量文章和文档,但我仍然很难理解语法。 (进入我的编码课程 2 个月,技术和计算机经验为 0。)

我无法理解如何将日历与字典中的日期相关联的逻辑。我当前的代码如下:

def difference_between_days():
    daysDict = {0 : \"Monday\",1: \"Tuesday\",2: \"Wedensday\",3: \"Thursday\",4: \"Friday\",5: 
\"Saturday\",6: \"Sunday\"}

    first_date = date(2021,7,28)
    end_date = date(2022,7,28)

    difference_between_dates = end_date - first_date
    print(f\"There are {difference_between_dates.days} days inbetween the two dates!\")

    d = date.weekday(first_date)
    dd = daysDict[d]
    print(f\"The first date selected is a : {dd}\")


difference_between_days()

编辑:使用某些功能(例如 .isoweekday)时,我遇到了打印问题,因为它返回了类似 \"<built-in method isoweekday of datetime.date object at 0x000001EB956FA0F0>\" 之类的东西,但我还没有上课!

    标签: python date datetime calendar logic


    【解决方案1】:

    Python 不是我选择的武器,但这应该可以胜任。 这个想法是使用 weekday() 将开始日期移至下一个星期日,并将结束日期移至前一个星期日。然后计算中间的天数,除以 7(周)并加 1,因为两端都是星期日。

    如果不清楚,请毫不犹豫地问,如果是,请接受答案。

    高温高压

    from datetime import datetime, timedelta 
    
    def number_of_sundays(from_str, to_str):
        
        # get date objects from the string representations in Ymd format
        from_date = datetime.strptime(from_str, "%Y/%m/%d")
        to_date = datetime.strptime(to_str, "%Y/%m/%d")
    
        # move start date to the following sunday
        from_date = from_date + timedelta(days=6-from_date.weekday())
        # move end date to the previous sunday
        to_date = to_date + timedelta(days=-to_date.weekday()-1)
    
        # now both dates are sundays so the number is the number of weeks + 1
        nb_sundays = 1 + (to_date - from_date).days / 7   
        return nb_sundays 
    
    print(number_of_sundays("2022/08/28", "2022/09/20"))
    

    【讨论】:

    • 谢谢你的回复,不过这不是手头的问题。你确实帮助了逻辑。但是我需要日期可以是任何日期,而不是将日期移到下一个星期日。前任。如果开始日期是 2022 年 1 月 5 日星期三,结束日期是 2022 年 1 月 24 日星期一,我需要一个程序来计算中间的 3 个星期日!
    • 我没有足够的声誉来投票或接受答案!尽管仍然非常感谢您的帮助!
    • @PedroRodrigues 这正是它的作用!输入任何日期,它会给你中间的星期天数,这是你最初的问题,根据这篇文章的标题。我在向你解释这个程序是如何工作的。只需阅读它,尝试理解它,然后再发表评论。
    • 所以更改我示例中的参数: print(number_of_sundays("2022/01/05", "2022/01/24")) 按预期返回 3
    • 对于阅读后没有测试您的解决方案,我深表歉意!您的回复实际上是我需要的解决方案!我要谢谢你!我希望有足够的代表尽快给你投票!
    【解决方案2】:

    我想通知 Wolf D 的响应答案并根据我的需要高效准确地工作!谢谢狼!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 2019-09-27
      相关资源
      最近更新 更多