如何在Python中获取当前季度年份,然后是当前季度的第一个日期和最后日期?
我希望通过导入日期时间
import datetime
人们看待Stack溢出需要直接的答案,这应该是非常简单的。哪个链接你提供了很多评论。因此,用户必须通过所有评论才能找到正确的答案。我正在写简单直接的答案。
答案 0 :(得分:4)
第一天与@ Karishh的解决方案相同。但是,对于最后一个日期,Python2.7
导致第四季度出现问题。因为12 + 1 = 13而日期时间不接受13作为一个月。所以你需要做一些技巧来处理它。
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)
答案 1 :(得分:2)
我是如何在c#中找到一些简单的解决方案并将其转换为python的,
override func viewWillDisappear(animated: Bool) {
print("video player is about to disapear")
if(media().sharedInstance.playerItem != nil){
print("video is about to end, and there is ssog playing, so lets do stuff")
media().sharedInstance.is_Video_Player_Open = false
media().sharedInstance.set_MP_Command()
media().sharedInstance.set_Now_Playing()
}
}
答案 2 :(得分:2)
我认为当前答案在Python 3中仍然无效,因此,由于这是本季度第一天和最后一天在Google上的热门搜索,因此我将提供在Python 3中可用的解决方案(大多数是Ahmet的/ /代替/):
def get_quarter(date):
return (date.month - 1) // 3 + 1
def get_first_day_of_the_quarter(date):
return datetime.datetime(date.year,(date.month-1)//3+1,1)
def get_last_day_of_the_quarter(date):
quarter = get_quarter(date)
return datetime.datetime(date.year + 3*quarter//12, 3*quarter%12+1, 1) + datetime.timedelta(days=-1)
答案 3 :(得分:0)
以克里希(Krishh)的答案为基础,但解决了一些发现的问题:
取而代之的是使用relativedeta
并将正确计算的开始日期偏移三个月,我们最终获得了一种更加可靠的方法来获取季度结束日期。
from datetime import datetime
from dateutil.relativedelta import relativedelta
current_date = datetime.now()
currQuarter = int((current_date.month - 1) / 3 + 1)
dtFirstDay = datetime(current_date.year, 3 * currQuarter - 2, 1)
dtLastDay = dtFirstDay + relativedelta(months=3, days=-1)
答案 4 :(得分:0)
这里有一个一/二班轮来获取当前季度的开始/结束日期。
from datetime import datetime
import math
from dateutil.relativedelta import relativedelta # requires python-dateutil
start_of_quarter = datetime(year=datetime.now().year, month=((math.floor(((datetime.now().month - 1) / 3) + 1) - 1) * 3) + 1, day=1)
end_of_quarter = start_of_quarter + relativedelta(months=3, seconds=-1)
答案 5 :(得分:0)
我做了很多测试,以找到适合我需要的解决方案,如果它可以帮助其他人,我会很高兴:
datval = fields.date.today()
if datval.month < 4 :
self.start_date = fields.date.today().replace(month=10, day=1)
self.end_date = fields.date.today().replace(month=12, day=31)
elif datval.month < 7 :
self.start_date = fields.date.today().replace(month=1, day=1)
self.end_date = fields.date.today().replace(month=3, day=31)
elif datval.month < 10 :
self.start_date = fields.date.today().replace(month=4, day=1)
self.end_date = fields.date.today().replace(month=6, day=30)
else :
self.start_date = fields.date.today().replace(month=7, day=1)
self.end_date = fields.date.today().replace(month=9, day=30)