首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中获得当前季度的第一次约会和最后一次约会?

在Python中获得当前季度的第一次约会和最后一次约会?
EN

Stack Overflow用户
提问于 2016-05-10 10:22:23
回答 7查看 24.6K关注 0票数 9

如何在Python中获得当前季度年,然后是当前季度年的第一次日期和最后一个日期?

我想通过导入日期时间

代码语言:javascript
运行
复制
import datetime

人们查看堆栈溢出需要直接向前回答,这应该非常简单。它曾经链接过你提供的有很多评论。因此,用户必须经过所有的评论才能找到正确的答案。我写的是简单而直接的答案。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-05-11 04:38:27

无论我如何在c#中找到一些简单的解决方案并将其转换为python,

代码语言:javascript
运行
复制
from datetime import datetime,timedelta
current_date=datetime.now()
currQuarter = (current_date.month - 1) / 3 + 1
dtFirstDay = datetime(current_date.year, 3 * currQuarter - 2, 1)
dtLastDay = datetime(current_date.year, 3 * currQuarter + 1, 1) + timedelta(days=-1)
票数 6
EN

Stack Overflow用户

发布于 2019-09-06 13:55:58

我认为当前的答案在Python 3中都不成立,因此由于这是google第一天和最后一天最热门的一次,我将提供一个在Python 3中工作的解决方案(主要是Ahmet的with //而不是/ /):

代码语言:javascript
运行
复制
from datetime import date as date_class
from datetime import timedelta, datetime


def get_quarter(p_date: date_class) -> int:
    return (p_date.month - 1) // 3 + 1


def get_first_day_of_the_quarter(p_date: date_class):
    return datetime(p_date.year, 3 * ((p_date.month - 1) // 3) + 1, 1)


def get_last_day_of_the_quarter(p_date: date_class):
    quarter = get_quarter(p_date)
    return datetime(p_date.year + 3 * quarter // 12, 3 * quarter % 12 + 1, 1) + timedelta(days=-1)


assert get_quarter(datetime(year=2021, month=10, day=5).date()) == 4
assert get_quarter(datetime(year=2020, month=9, day=25).date()) == 3
assert get_quarter(datetime(year=2020, month=12, day=11).date()) == 4
assert get_quarter(datetime(year=2020, month=1, day=2).date()) == 1

assert get_first_day_of_the_quarter(datetime(2020, 10, 5).date()) == datetime(2020, 10, 1)
assert get_first_day_of_the_quarter(datetime(2020, 9, 25).date()) == datetime(2020, 7, 1)
assert get_first_day_of_the_quarter(datetime(2020, 12, 11).date()) == datetime(2020, 10, 1)
assert get_first_day_of_the_quarter(datetime(2020, 1, 2).date()) == datetime(2020, 1, 1)

assert get_last_day_of_the_quarter(datetime(2020, 10, 5).date()) == datetime(2020, 12, 31)
assert get_last_day_of_the_quarter(datetime(2020, 9, 25).date()) == datetime(2020, 9, 30)
assert get_last_day_of_the_quarter(datetime(2020, 12, 11).date()) == datetime(2020, 12, 31)
assert get_last_day_of_the_quarter(datetime(2020, 1, 2).date()) == datetime(2020, 3, 31)
assert get_last_day_of_the_quarter(datetime(2020, 5, 6).date()) == datetime(2020, 6, 30)
票数 19
EN

Stack Overflow用户

发布于 2017-02-06 08:12:59

拥有第一天与@Karishh的解决方案是一样的。但是,就最后一个日期而言,Python2.7给第四季度带来了一个问题。因为12+1=13和datetime不接受13作为一个月。所以你需要用一些技巧来处理它。

代码语言:javascript
运行
复制
import datetime


def get_quarter(date):
    return (date.month - 1) / 3 + 1

def get_first_day_of_the_quarter(date):
    quarter = get_quarter(date)
    return datetime.datetime(date.year, 3 * quarter - 2, 1)

def get_last_day_of_the_quarter(date):
    quarter = get_quarter(date)
    month = 3 * quarter
    remaining = month / 12
    return datetime.datetime(date.year + remaining, month % 12 + 1, 1) + datetime.timedelta(days=-1)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37135699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档