如何根据给定日期动态设置日期时段/日期范围?

问题描述 投票:0回答:1

我正在寻找一种函数来设置一个给定日期的日期/日期间隔....

首先,让我解释一下背景:

我有一个管理婚礼铭文的申请。我在我的档案页面中使用了一个“季节日期”的系统

  • 2017-2018
  • 2018-2019
  • 2019-2020等

每个季节(或日期)从9月1日开始并在8月31日结束,因此例如2017-2018对应于2017-09-01至2018-08-31,2018-2019对应于2018-09-01至2019- 08-31等

所以,如果我有一个像2019-01-23这样的结婚日期,我想保存相应的季节,就在2018-2019。

其实我写这段代码:

    //for example (I have a date object in fact in this $evenement var)
    $evenement = "2019-01-23";
    $start = Carbon::createFromFormat('Y-m-d', $evenement->copy()->subYear()->year . '09-01');
    $end = Carbon::createFromFormat('Y-m-d', $evenement->year . '08-31');
    if($evenement->between($depart, $fin)){
        $saison = $depart->year . '-' . $fin->year;
    }

如果日期是在2019-01-01之后,它可以工作但不是以前而不是未来的日期,(而不是此时的功能)......

你能帮助我实现这个目标吗?这将是非常好的。

谢谢

php date php-carbon
1个回答
0
投票

我在昨晚找到了解决方案!

这是我的功能,以获得给定日期的“季节”。

public static function getSeason($date)
{
    if($date->month >= 9 && $date->month <= 12){
        $annee1 = $date->year;
        $annee2 = $annee1 + 1;
        $saison = $annee1 . '-' . $annee2;
    }
    elseif($date->month >= 1 && $date->month <= 8){
        $annee2 = $date->year;
        $annee1 = $annee2 - 1;
        $saison = $annee1 . '-' . $annee2;
    }
    return $saison;
}

例如,如果日期是2018-10-03,

$season = "2018-2019";

如果日期= 2019-04-21,

$season = "2018-2019";

您对此功能有何看法,我可以对其进行优化吗?

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.