从python中提取月份的最后一天和第一天

时间:2019-06-17 10:46:50

标签: python-3.x

我是python的新手,我有这种格式的字符串

Ex. 'Mar-00'

我怎么计算这个月的第一天和最后一天。

输出:

first day : 01-Mar-00

last day : 31-Mar-00

例如:“ 2月17日”

first day : 01-Feb-17

last day : 28-Feb-17

1 个答案:

答案 0 :(得分:0)

您可以使用calendar.monthrange(year, month)[1]来获取给定月份和年份的天数。

第一个始终是01,最后一个是calendar.monthrange(year, month)[1]

的值

尝试一下,让我知道它是否有效:

import calendar

month_abbr_to_num = {v: k for k,v in enumerate(calendar.month_abbr)}

month_abbr, year_2_digit = input("please enter month, e.g. Mar-00:  ").split('-')

month = month_abbr_to_num[month_abbr]
year = int('20'+year_2_digit)

days_in_month = calendar.monthrange(year,month)[1]

print("first day : {:02d}-{}-{}".format(1, month_abbr, year_2_digit))
print("last day : {:02d}-{}-{}".format(days_in_month, month_abbr, year_2_digit))

编辑:

在您对原始问题发表评论之后,此处以函数形式返回两个datetime对象:

import calendar
import datetime

month_abbr_to_num = {v: k for k,v in enumerate(calendar.month_abbr)}

def get_first_and_last_day(user_input):
    month_abbr, year_2_digit = user_input.split('-')
    month = month_abbr_to_num[month_abbr]
    year = int('20' + year_2_digit)
    days_in_month = calendar.monthrange(year, month)[1]
    first_day = datetime.datetime(year, month, 1)
    last_day = datetime.datetime(year, month, days_in_month)
    return first_day, last_day



first, last = get_first_and_last_day(input("please enter month, e.g. Mar-00:  "))

print("first day : ",first)
print("last day : ",last)