微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅在标记为星期几的结束日期 laravel/php 之间保存日期 startdate

如何解决仅在标记为星期几的结束日期 laravel/php 之间保存日期 startdate

首先,早上好。

查询可能有点混乱,但我会尽力解释自己。

在这个例子中,我从一个表单中收到一个开始和结束日期,以及一个数组,其中包含我想要递归保存的这两个日期之间的星期几。

在下面的请求中,我在星期一(1)、星期二(2)、星期五(5)中放置了一个月的差异,但我不知道如何从中获得这些天的确切日期Y/m/d 并保存它们。

我的要求:

array:8 [▼
  "_token" => "OxIKlatx6q4BcFVfLc8aB0mxQzDmOEw627s9TaSq"
  "name" => "Dates to save"
  "start_date" => "07/06/2021"
  "end_date" => "08/07/2021"
  "days" => array:4 [▼ <- Thats my array of days from form being 0 sunday,1 monday...
    0 => "1"
    1 => "2"
    2 => "5"
  ]

还有我的控制器:

    $startDate=$request->start_date;
    $endDate=$request->end_date;

    $period = CarbonPeriod::create($startDate,$endDate);

    foreach ($period as $date) {
        // filter by day of week
        $date->format('Y-m-d');
    }

谢谢大家

解决方法

$period = CarbonPeriod::create(
    Carbon::createFromFormat('d/m/Y','07/06/2021'),Carbon::createFromFormat('d/m/Y','08/07/2021'),)->filter(
    fn ($date) => in_array($date->dayOfWeek,[1,4,5]),);

foreach ($period as $date) {
    $date->format('Y-m-d');
}

对于旧版本的 PHP:

$days = [1,5];
$period = CarbonPeriod::create(
    Carbon::createFromFormat('d/m/Y','08/07/2021')
)->filter(function ($date) use ($days) {
    return in_array($date->dayOfWeek,$days);
});
,

在不知道周数的情况下,很难假设所指的是 07/06/202108/06/2021 之间的哪个“星期一”

我建议选择将实际日期发送到服务器的前端库或实现。

例如,flatpickr

使用此库,您可以定义多个日期/范围,并确保您的服务器会收到实际日期。即:

HTML
            <article>
                <form action="">
                    <input name="attendance_dates" type="text" placeholder="Select Dates.." class="date-multiple" id="attendance-dates">
                    <input type="submit" id="date-multiple-submit-btn">
                </form>
            </article>
CSS
article {
  padding: 16px;
  width: 50%
}
JS
const fp = flatpickr(".date-multiple",{
    mode: "multiple",dateFormat: "Y-m-d"
});

    $("#date-multiple-submit-btn").click(function (e) {
        e.preventDefault();

        $.ajax({
            type: "POST",url: "your-form-submit-route",data: {
                "_method": "POST","_token": $('meta[name="csrf-token"]').attr("content"),"name": "Dates to save","dates": $("#attendance-dates").val()
            },success: function (response) {
                console.log(response);
            },});

    })
控制器
$dates = empty($d = $request->attendance_dates) ? [] : explode($d); // [2021-06-14,2021-06-23,2021-06-12,2021-07-14]

JSFiddle Demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?