如何在给定日期的函数中动态设置dateperiod / daterange?

时间:2018-09-13 16:22:23

标签: php date php-carbon

我正在寻找编写函数来设置具有给定日期的日期期限/日期间隔的方法。...

首先,让我解释一下上下文:

我有一个用于管理婚礼题字的应用程序。 我在档案页面中使用的是带有“季节性”的系统,例如

  • 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年1月1日之后,则可以使用,但不适用于之前的日期和将来的日期,(并且当前不支持此功能)...

您能帮我实现这个目标吗?很好。

谢谢

1 个答案:

答案 0 :(得分: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";

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

谢谢