【问题标题】:How to set dynamically a dateperiod/daterange in function of a given date?如何根据给定日期动态设置日期周期/日期范围?
【发布时间】:2018-09-13 16:22:22
【问题描述】:

我正在寻找编写一个函数来设置一个给定日期的日期周期/日期间隔的方法....

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

我有一个管理婚礼铭文的应用程序。 我为我的档案页面使用了一个带有“季节性日期”的系统,例如

  • 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】:

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

    这是我在给定日期的函数中获取“季节”的函数。

    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";
    

    你觉得这个功能怎么样,我可以优化一下吗?

    谢谢

    【讨论】:

    • 这真的是回应吗?我问只是因为您在回答中又问了另一个问题。也许您需要将您的答案作为 codereview.stackexchange 的问题移动
    • 是的,这是我的答案,但我想知道是否有办法编写或优化这个函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2020-12-23
    相关资源
    最近更新 更多