首页 > 解决方案 > 根据当前时间戳获取会计年度-python

问题描述

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

所以经过一番研究,我发现这个包名为fiscalyearwhere you can modify the start date of the会计年度。就我而言,我想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')

哪个输出正确:

'2018-07-01'

但是,当月份转到 8 月时,这将不起作用,因为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'))

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

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

py版本3.6.7

标签: pythonpython-3.xpandasdatetime

解决方案


我在财政领域的知识接近于0,但根据[ReadTheDocs]:财政年度文档

该类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

推荐阅读