【问题标题】:Laravel Carbon get start + end of current weekLaravel Carbon 开始 + 本周结束
【发布时间】:2016-08-11 16:40:18
【问题描述】:

我正在使用 Laravel 4 开发一个在 facebook 上发布/安排餐厅菜单的工具。 为此,我需要一个当前周的日期选择器,总是从星期一开始,总是在星期日结束。

Wireframe for restaurant menu

我已经尝试过http://carbon.nesbot.com/docs/#api-getters 的示例,但没有成功。

有什么想法吗?

【问题讨论】:

    标签: php laravel laravel-4 php-carbon


    【解决方案1】:

    Carbon 库非常简单。下面是代码示例:

    $now = Carbon::now();
    $weekStartDate = $now->startOfWeek()->format('Y-m-d H:i');
    $weekEndDate = $now->endOfWeek()->format('Y-m-d H:i');
    

    即使您也可以选择更改一周的开始日期和结束日期。是这样的,

    $start = $now->startOfWeek(Carbon::TUESDAY);
    $end = $now->endOfWeek(Carbon::MONDAY);
    

    来源:https://carbon.nesbot.com/docs/#api-getters

    【讨论】:

    • 这会将两个变量设置为周末,因为->startOfWeek 将更改变量,而不是克隆它
    • 为了避免克隆,使用 ->copy()
    【解决方案2】:

    最好的办法是使用jquery插件

    http://api.jqueryui.com/datepicker/

    在您的 view.blade.php 中创建输入字段

    <input type="text" id="in">
    

    在您的脚本文件中选择此输入并设置日期范围

    <script>
            $("#in").datepicker({
                minDate: new Date("{{Carbon\Carbon::now()->startOfWeek()->format('Y/m/d')}}"),
                maxDate: new Date("{{Carbon\Carbon::now()->endOfWeek()->format('Y/m/d')}}")
            });
    </script>
    

    应该是这样的

    http://imgur.com/K0ZhiVy

    【讨论】:

      【解决方案3】:

      这将为您提供一周的开始(星期一)到一周的结束(星期日)。

      不知道这是否是服务器上的设置。 (有些人把第一周放在星期天)

      private $start;
      private $end;
      
      public function setWeekPeriod($weeknumber)
      {
          $week_start = (new DateTime())->setISODate(date("Y"),$weeknumber)->format("Y-m-d H:i:s");
      
          $this->start = Carbon::createFromFormat("Y-m-d H:i:s", $week_start);
          $this->start->hour(0)->minute(0)->second(0);
          $this->end = $this->start->copy()->endOfWeek();
      }
      

      【讨论】:

        【解决方案4】:

        请注意,如果您希望开始日期保持在一周的开始,则需要使用 CarbonImmutable。 (也不是“Laravel Carbon”,它只是 Carbon)

        $now = CarbonImmutable::now();
        $weekStartDate = $now->startOfWeek();
        $weekEndDate = $now->endOfWeek();
        

        【讨论】:

        • 谢谢。我对为什么在原始日期实例上调用endOfWeek() 来更改我的开始日期感到非常困惑。现在我明白了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-04
        • 2023-03-30
        • 1970-01-01
        • 2021-05-07
        • 2012-07-25
        • 2019-11-06
        相关资源
        最近更新 更多