python 计算上个月或指定前几个月

核心算法逻辑为每次都只计算上个月 要得到前几个月便循环几次

以下是函数方法
# date 参数是时间格式的时间, n是要计算前几个月
import datetime

def getTheMonth(date, n):
    month = date.month
    year = date.year
    for i in range(n):
        if month == 1:
            year -= 1
            month = 12
        else:
            month -= 1
    return datetime.date(year, month, 1).strftime('%Y-%m')

# 测试
date = datetime.datetime.today()         # 输出 2019-04-15
getTheMonth(date, 1).strftime("%Y-%m")   # 输出 2019-03
getTheMonth(date, 6).strftime("%Y-%m")   # 输出 2018-10
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,下面是编写万年历程序的一些建议。 首先,你可以使用 Python 的 `calendar` 模块来获取每个的日历信息。这个模块提供了很多有用的函数,例如 `isleap` 函数可以用来判断某一年是否是闰年。 你可以先编写一个函数来打印当份的日历,然后再添加功能来让用户输入年份和份,并打印出指定份的日历。你还可以添加功能来让用户输入日期,并输出该日期是星期几。 这是一个简单的万年历程序的示例代码,它可以打印当份的日历: ``` import calendar # 获取当份的日历 cal = calendar.monthcalendar(2020, 6) # 打印日历 print("Mo Tu We Th Fr Sa Su") for week in cal: for day in week: if day == 0: print(" ", end="") else: print("%2d" % day, end=" ") print() ``` 希望这些信息能帮到你。 ### 回答2: Python万年历程序的编写需要考虑到以下几个方面: 1. 用户输入:首先,程序需要通过input函数获取用户输入的年份和份,以确定要显示的日历。同时,还需要对用户输入进行有效性检查,确保输入的年份和份符合正确范围。 2. 日期计算:根据用户输入的年份和份,可以使用datetime模块中的函数来计算的第一天是星期几,以及该的总天数。同时,还需要判断该年份是否是闰年,以确定2的天数。 3. 日历显示:根据计算得到的结果,可以使用print函数来按照特定格式显示日历。在显示日历的同时,可以将每个日期的格式进行美化,比如可以用星期几的简称代替完整的星期名称。 4. 错误处理:在用户输入错误或者计算过程中出现错误时,程序需要提供相应的错误提示信息,以帮助用户发现并解决问题。 5. 功能扩展:可以在基本的万年历程序上添加一些功能,比如可以增加用户选择不同的显示方式(比如一周为一行还是一周为一组),或者可以显示农历等其他信息。 综上所述,Python编写万年历程序需要考虑用户输入、日期计算、日历显示、错误处理和功能扩展等方面,通过适当调用相关模块和函数,以及合理的逻辑判断和提示信息,可以完成一个基本的万年历程序。 ### 回答3: 万年历程序可以通过Python编写。首先,我们需要用户输入一个年份,然后我们可以根据这个年份来计算出该年份的闰年和平年的列表。通过这些信息,我们可以定义一个函数来判断某一个年份是闰年还是平年。 接下来,我们可以使用Python的datetime模块来获取当日期。通过获取当年份和份,我们可以打印出日历表的头部,包括年份和份。然后,我们可以使用一个循环来打印出该份的所有日期。为了使日历可以对齐,我们可以使用字符串格式化来控制每个日期的宽度。 在打印日期的过程中,我们需要注意处理每个的第一天和最后一天。我们可以使用datetime模块中的date类来计算出每个的第一天和最后一天的星期几,并据此来确定每个第一天之和最后一天之后的空白天数。 最后,我们可以在程序中添加一些交互性,以便用户可以选择不同的年份和份进行查看。我们可以使用一个循环来持续接收用户的输入,并在用户输入"quit"时退出程序。 通过以上步骤,我们可以编写一个简单但实用的Python万年历程序。它可以帮助用户快速查看任意年份和份的日历,并且能够正确处理闰年和平年的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我就是全世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值