根据当前时间戳获取会计年度-python

ank*_*_91 4 python datetime python-3.x pandas

我正在尝试根据今天的日期获取财政年度的开始日期。

因此,经过一番研究后,我发现了这个软件包,名为“fiscalyear您可以在其中修改会计年度的开始日期”。就我而言,我想01-07-year成为我的财政年度的开始日期,所以我设置fiscalyear.START_MONTH = 7

我已经尝试过以下(如果您是可重现的示例pip install fiscalyear):

import datetime
import fiscalyear
fiscalyear.START_MONTH = 7
a = fiscalyear.FiscalYear(datetime.datetime.now().year).start.date()
a.strftime('%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

哪个输出正确:

'2018-07-01'
Run Code Online (Sandbox Code Playgroud)

然而,当月份变成八月时,这将不起作用,因为它datetime.datetime.now().year没有改变。所以我尝试做类似的事情:

if (datetime.datetime.now()-pd.to_datetime('2018-07-01')).days < 365:
    a = fiscalyear.FiscalYear(datetime.datetime.now().year).start.date()
    print(a.strftime('%Y-%m-%d'))
else:
    a = fiscalyear.FiscalYear(datetime.datetime.now().year+1).start.date()
    print(a.strftime('%Y-%m-%d'))
Run Code Online (Sandbox Code Playgroud)

我对自己正在做的事情有一种不好的预感,因为这现在可能也适用于闰年。

在 python 中是否有更好的方法可以根据当前时间戳检测财政年度的开始日期?

py版本3.6.7

Cri*_*ati 6

我在财政领域的知识接近于,但根据[ReadTheDocs.FiscalYear]:基本用法

该类FiscalYear提供一个对象,用于存储有关特定会计年度的开始和结束的信息。

...

上述每个对象的开始和结束都存储为类的实例FiscalDateTime。此类提供与 类相同的所有功能datetime,此外还具有查询会计年度、会计季度、会计月份和会计日的功能。

因此,FiscalYear不能与日期一起使用,而是与FiscalDateTime(或其更简单的兄弟:FiscalDate)一起使用。

>>> import fiscalyear
>>> fiscalyear.START_MONTH = 7
>>>
>>> cur_y = fiscalyear.FiscalYear(datetime.datetime.now().year)
>>> cur_y.start.date()
datetime.date(2018, 7, 1)
>>> cur_y.end.date()
datetime.date(2019, 6, 30)
>>>
>>> cur_dt = fiscalyear.FiscalDate(2019, 2, 19)  # Current date (at answer time)
>>> cur_dt.fiscal_year
2019
>>>
>>> jul_dt = fiscalyear.FiscalDate(2019, 7, 19)  # A date past July 1st (when the fiscal year should change)
>>> jul_dt.fiscal_year
2020
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以尝试以下代码,它对我有用:

>>> import fiscalyear
>>> fiscalyear.START_MONTH = 4
>>> fiscalyear.FiscalYear.current()
FiscalYear(2021)
>>> 
Run Code Online (Sandbox Code Playgroud)