根据年度参数计算财政年度第一天的方法

本文关键字:第一天 方法 计算 参数 | 更新日期: 2023-09-27 18:19:03

我正在尝试创建一个简单的方法,它可以以以下格式接收财政年度期间:

2014-2015

我需要返回DateTime对象的方法,特别是该财务期间的第一天,在上述情况下,这将是01/04/2014 00:00:00.000

我还需要最终能够计算出该财务期间的最后一天,但我不确定这是否应该是一个不同的方法,还是在相同的方法中添加一个额外的参数来指示需要的日期。

到目前为止,我能想到的只有:

public static DateTime PermitValidFrom (string financialYear)
{
    string startFinancialYear;
    string endFinancialYear;
    DateTime startOfFinancialYear;
    startFinancialYear = financialYear.Substring(1, 4);
    endFinancialYear = financialYear.Substring(6, 4);
//need to work out start of the financial year based on this period
    return startOfFinancialYear;
}

我只是不知道如何给startofinancialyear赋值,甚至不知道是否有更好的方法来一起做这些。

抱歉,如果这已经回答了以前,但我所能找到的是基于当前DateTime.Now值计算财政年度开始的示例,在我的情况下,每次调用该方法时此值可能不同。

根据年度参数计算财政年度第一天的方法

为了澄清我的问题,围绕我的任务的事实如下:

财政年度在这种情况下开始将始终是01/04(4月1日)在这种情况下,财政年度结束将始终是3月的最后一天。

如果这是星期六,星期日或任何其他日子在这种情况下是无关的。

我所需要的是用连字符分隔的两年,从这我需要财政年度的开始和财政年度的结束。我认为事实很简单。

无论如何,看到我收到了否定的投票和没有真正的建设性的反馈,我最终想出了我自己的解决方案,我想我应该把它发布,以防它对其他人有帮助。

public static DateTime FinancialPeriods(string financialYear, bool end)
{
    string startFinancialYear;
    string endFinancialYear;
    DateTime startOfFinancialYear;
    DateTime endOfFinancialYear;
    startFinancialYear = financialYear.Substring(0, 4);
    endFinancialYear = financialYear.Substring(5, 4);
    startOfFinancialYear = new DateTime(int.Parse(startFinancialYear), 4, 1);
    endOfFinancialYear = new DateTime(int.Parse(endFinancialYear), 4, 1).AddDays(-1);
    if (end == false)
    {
        return startOfFinancialYear;
    }
    else
    {
        return endOfFinancialYear;
    }   
}

我会滚动你自己的类型,像这样:-

    using System;
    using System.Text.RegularExpressions;
    public class FinancialPeriod
    {
    const string PATTERN = @"^([0-9]{4})'s?-'s?([0-9]{4})$";
    public FinancialPeriod()
    {
        this.Year = DateTime.Today.Year;
        if (DateTime.Today.Month > 3)
        {
            this.From = new DateTime(Year, 4, 1);
            this.To = new DateTime(Year + 1, 3, DaysInMarch(Year + 1));
        }
        else
        {
            this.From = new DateTime(Year - 1, 4, 1);
            this.To = new DateTime(Year, 3, DaysInMarch(Year));
        }
    }
    public FinancialPeriod(string period) : this()
    {
        Match m = Regex.Match(period, PATTERN);
        this.From = new DateTime(Int32.Parse(m.Groups[1].Value), 4, 1);
        this.To = new DateTime(Int32.Parse(m.Groups[2].Value), 3, DaysInMarch(Int32.Parse(m.Groups[2].Value)));
    }
    private DateTime From { get; set; }
    private DateTime To { get; set; }
    private int Year { get; set; }
    public string period
    {
        get
        {
            return string.Format("{0} - {1}", this.From.Year, this.To.Year);
        }
    }
    private int DaysInMarch(int yr)
    {
        return DateTime.DaysInMonth(yr, 03);
    }
}
这里的

小提琴