PHP计算财务年度的开始

Fel*_*Eve 5 php date financial

我正在工作的公司有一个财政年度,从1月1日开始,如果是星期四,否则从上一年的最后一个星期四开始.

我已经编写了一个函数来执行此操作,但需要循环似乎效率低下:

function get_start_of_financial_year() {
    $date = date('Y').'-01-01';
    $correct_day = false;
    while(!$correct_day) {
        $day_num = date('N', strtotime($date));
        if($day_num==4) return $date;
        $date = date('Y-m-d', strtotime($date.' -1 day'));
    }
}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试这样的事情:

function get_start_of_financial_year() {
    $date = date('Y').'-01-01';
    $day_num = date('N', strtotime($date));
    $modifer = 4 - $day_num;
    return date('Y-m-d', strtotime($date.' -'.$modifer.' days'));
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我知道在计算我的修饰语时我做错了什么,但是什么?

我在这里看过其他类似的问题/答案,并且都略有不同,所以我认为这是一个真正的新问题.

Luc*_*one 6

根据文件

"'last'dayname"取自当天的最后一天.(例如:"2008年7月上旬"是指"2008-06-25";"2008年7月"首先将当前日期设置为"2008-07-01",然后"上次结婚"移至上一个周三,即"2008年7月" -06-25" ).

你的情况就是这样

function get_start_of_financial_year($year) {
    // get the first Thursday before 2 Jan of $year
    return date("Y-m-d", strtotime("last Thursday $year-01-02"));
}

echo get_start_of_financial_year( date("Y") );
Run Code Online (Sandbox Code Playgroud)