如何从给定日期获得该月的最后一天

时间:2017-03-30 00:43:48

标签: python date

我的数据框中有一列日期,我想从这些日期开始收到该月的最后一天 例如,如果日期是2017-01-25'我想得到2017-01-31' 我想我可以从日期中获取月份和年份数字,并使用月份来计算月份的最后一天,但我正在寻找一行代码

4 个答案:

答案 0 :(得分:7)

如果您的日期为d,那么最简单的方法是使用calendar模块查找当月的天数:

datetime.date(d.year, d.month, calendar.monthrange(d.year, d.month)[-1])

或者,仅使用datetime,我们只需找到下个月的第一天,然后删除一天:

datetime.date(d.year + d.month // 12, 
              d.month % 12 + 1, 1) - datetime.timedelta(1)

如果表达为:

,您可能会发现逻辑更清晰
datetime.date(d.year + (d.month == 12), 
              (d.month + 1 if d.month < 12 else 1), 1) - datetime.timedelta(1)

答案 1 :(得分:0)

使用

查找一个月的最后一个日期
year, month = 2017, 2
pd.date_range('{}-{}'.format(year, month), periods=1, freq='M')

答案 2 :(得分:0)

简单的熊猫有一个功能:

pd.Period('10-DEC-20',freq='M').end_time.date()

使用 freq='M' 修改您的要求

end_time 为月末 start_time 开始日

输出为:

Output Image - Click Here

答案 3 :(得分:-1)

我得到一个月的第一天,减去一天得到一天的最后一天。 ccyymmdd = str((pd.Period(datetime.today()。replace(day = 1),'D')-1).strftime(“%C%y-%m-%d”))